Foros del Web » Programando para Internet » PHP »

cambiar los nombres de países por sus banderas en una tabla

Estas en el tema de cambiar los nombres de países por sus banderas en una tabla en el foro de PHP en Foros del Web. Buenas a todos :) Estoy haciendo para mi trabajo una tabla en php que extrae datos de una bd en mysql, y uno de los ...
  #1 (permalink)  
Antiguo 31/08/2011, 14:58
 
Fecha de Ingreso: agosto-2011
Mensajes: 11
Antigüedad: 13 años, 2 meses
Puntos: 0
cambiar los nombres de países por sus banderas en una tabla

Buenas a todos :)

Estoy haciendo para mi trabajo una tabla en php que extrae datos de una bd en mysql, y uno de los campos es el país. Estoy intentando cambiar el nombre del país por su bandera y no lo consigo. He estado mirando este hilo:

http://www.forosdelweb.com/f18/sustituir-pais-por-bandera-727116/

en el que precisamente se trata ese tema pero ni aun así lo consigo. Tal vez ustedes me puedan ayudar. Los archivos php con los que trabajo son estos:

Código:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3 .org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3 .org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Journal Scholar: Global</title>
</head>
<?php
include("instrucciones.php");
?>
<body>
<p><?php
 //Connection
    $global_dbh = mysql_connect('localhost','root','3910') or die("Unable to connect: " . mysql_error() . "<br>");
    $database = mysql_select_db("prueba") or die( "Unable to select database<br>");
    $table = "hoja1";
    $page = "tabla";
    display_db_table($page, $table, $global_dbh, FALSE, "border='1'");
    ?></p>
 
</div>
</body>
</html>
Código:
<?php
function display_db_query($page, $query_string, $connection, $sort, $image, $table_params) {
    $result_id = mysql_query($query_string, $connection) or die("display_db_query:" . mysql_error());
    $column_count = mysql_num_fields($result_id) or die("display_db_query:" . mysql_error());
    // Here the table attributes from the $table_params variable are added
    print("<TABLE $table_params >\n");
    // Print Headers
    print("<TR>");
    for($column_num = 0; $column_num < $column_count; $column_num++) {
        $field_name = mysql_field_name($result_id, $column_num);
        echo ("<TH><a href=\"$page.php?order_by=$field_name&sorting=$sort\">$field_name</a></TH>");
    }
    print("</TR>\n");
    // Print the body
    while($row = mysql_fetch_row($result_id)) {
        print("<TR>");
        for($column_num = 0; $column_num < $column_count; $column_num++) {
	
              print("<TD class=field_$column_num>$row[$column_num]</TD>\n");
            
        }
        print("</TR>\n");
    }
    print("</TABLE>\n");
}
function display_db_table($page, $tablename, $connection, $image, $table_params) {
    $order_by = (isset($_GET['order_by'])) ? $_GET['order_by'] : 'Title';
    $sorting = (isset($_GET['sorting'])) ? $_GET['sorting'] : 'desc';
    switch($sorting){
  case "asc":
    $sort = 'desc';
    break;
  case "desc":
    $sort = 'asc';
    break;
    }
    $query_string = "SELECT * FROM $tablename ORDER BY $order_by"." $sort";
    display_db_query($page, $query_string, $connection, $sort, $image, $table_params);
}
?>
el campo "country" está en la columna número 1 ( $column_num = 1) así que estaba buscando alguna manera de expresar que "cuando $column_num = 1" imprima
Código:
print("<TD class=field_$column_num><img src="$row.png"></TD>\n")
en vez de lo normal que sería
Código:
print("<TD class=field_$column_num>$row[$column_num]</TD>\n")
Si alguno de ustedes me puede ayudar, estaría muy agradecido :)

Saludos
  #2 (permalink)  
Antiguo 31/08/2011, 16:24
Colaborador
 
Fecha de Ingreso: mayo-2008
Ubicación: $MX['VZ']['Xalapa']
Mensajes: 3.005
Antigüedad: 16 años, 6 meses
Puntos: 528
Respuesta: cambiar los nombres de países por sus banderas en una tabla

Si tienes almacenado el nombre del país en la tabla en la columna 1 y si la imagen de la bandera tiene exactamente el nombre del país al que corresponde, es muy simple:
print("<TD ><img src="$row[1]".".png"></TD>\n")
  #3 (permalink)  
Antiguo 31/08/2011, 16:50
 
Fecha de Ingreso: agosto-2011
Mensajes: 11
Antigüedad: 13 años, 2 meses
Puntos: 0
Respuesta: cambiar los nombres de países por sus banderas en una tabla

Muchas gracias por responder tan rápido.

Efectivamente, el nombre de las imágenes de las banderas es el mismo que el que aparece en la base de datos.

He probado el código que dices y me da el error "Parse error: syntax error, unexpected T_VARIABLE in C:\xampp\htdocs\fin\instrucciones.php on line 20".

Después me he dado cuenta de que las imágenes las tengo en una subcarpeta llamada flags, así que se lo he añadido así al código que me has dicho:

Código:
print("<TD ><img src="flags/$row[1]".".png"></TD>\n");
pero entonces el error cambia a "Parse error: syntax error, unexpected T_STRING in C:\xampp\htdocs\fin\instrucciones.php on line 20".

También he pensado que tal vez sería necesaria una estructura de control if / else (o algo similar) porque solo quiero que imprima ese código en el caso de los países, en los demás casos quiero los datos de la bd sin modificar.
  #4 (permalink)  
Antiguo 31/08/2011, 17:01
Colaborador
 
Fecha de Ingreso: mayo-2008
Ubicación: $MX['VZ']['Xalapa']
Mensajes: 3.005
Antigüedad: 16 años, 6 meses
Puntos: 528
Respuesta: cambiar los nombres de países por sus banderas en una tabla

No, fallo mío en las comillas:
Código PHP:
Ver original
  1. print("<TD ><img src=".$row[1].".png></TD>\n");
  #5 (permalink)  
Antiguo 31/08/2011, 17:15
 
Fecha de Ingreso: agosto-2011
Mensajes: 11
Antigüedad: 13 años, 2 meses
Puntos: 0
Respuesta: cambiar los nombres de países por sus banderas en una tabla

muchas gracias, ya aparecen las imágenes :)

pero ahora el problema es que aparecen las imágenes en todas las columnas xD no solo en la de países. He intentado solucionarlo con un if/else pero no va... aquí está mi intento:

Código:
for($column_num = 0; $column_num < $column_count; $column_num++) {
	if($column_num = 1) {
              print("<TD class=field_$column_num><img src="."flags/".$row[1].".png title=$row[1]></TD>\n");
            }
            else{
              print("<TD class=field_$column_num>$row[$column_num]</TD>\n");
            }            
         }
  #6 (permalink)  
Antiguo 31/08/2011, 17:55
Colaborador
 
Fecha de Ingreso: mayo-2008
Ubicación: $MX['VZ']['Xalapa']
Mensajes: 3.005
Antigüedad: 16 años, 6 meses
Puntos: 528
Respuesta: cambiar los nombres de países por sus banderas en una tabla

No estás haciendo bien la comparación en el if, la comparación es ==, el = es para asignar:

Código PHP:
Ver original
  1. for($column_num = 0; $column_num < $column_count; $column_num++) {
  2.     if($column_num == 1) {
  3.               print("<TD class=field_$column_num><img src="."flags/".$row[1].".png title=$row[1]></TD>\n");
  4.             }
  5.             else{
  6.               print("<TD class=field_$column_num>$row[$column_num]</TD>\n");
  7.             }            
  8.          }
  #7 (permalink)  
Antiguo 01/09/2011, 00:39
 
Fecha de Ingreso: agosto-2011
Mensajes: 11
Antigüedad: 13 años, 2 meses
Puntos: 0
Respuesta: cambiar los nombres de países por sus banderas en una tabla

muchísimas gracias, ya funciona perfectamente. Eres un máquina ocp001a ;)

Etiquetas: banderas, html, mysql, nombres, países, tabla, variables
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 06:06.