Mostrar información en una tabla dinámica (PHP)
05-04-2005 > GurXMostrar o escribir comentarios (dudas) sobre este artículo
Función genérica que crea una tabla con información, en nuestro caso, recogida de la base de datos:
El funcionamiento es el siguiente. Seleccionamos los registros de la base de datos y los almacenamos en una variable tipo array.
$vec = array();
$result = mysql_query(' SELECT id,nombre,apellido,telefono,descripcion FROM web.usuaris WHERE ( '.$sql_data.' '.$ref.' ) ORDER BY id DESC;', $conn);
while ( $reg = mysql_fetch_array($result)){
array_push($vec,$reg);
}
Creamos otro array con información específica para cada columna. Es necessario que creemos un registro para cada columna.
//nom_columna = Nombre que aparecerà en la cabecera de la columna.
//tamany_columna = Amplada de dicha columna.
//nom_camp_bd = nombre del campo en el array $reg. En nuestro caso és el nombre del campo en la base de datos.
//input = Como opcional podemos especificar la información la queremos dentro de un input (y su tamaño), útil en el caso como la descripción que su tamaño es considerable.
$conf= array();
array_push($conf, array("nom_columna"=>"Id", "tamany_columna"=>"50","nom_camp_bd"=>"id"));
array_push($conf, array("nom_columna"=>"Nombre", "tamany_columna"=>"100","nom_camp_bd"=>"nombre"));
array_push($conf, array("nom_columna"=>"Apellido", "tamany_columna"=>"200","nom_camp_bd"=>"apellido"));
array_push($conf, array("nom_columna"=>"Telefono", "tamany_columna"=>"100","nom_camp_bd"=>"telefono"));
array_push($conf, array("nom_columna"=>"Descripcion", tamany_columna"=>"200","nom_camp_bd"=>"descripcion","input"=>"20"));
Por último le pasamos los dos arrays a la función que nos generará la tabla:
echo mostrar_resultat($vec,$conf);
El código de dicha función es el siguiente:
function mostrar_resultat($vec,$conf){
$c1 = "#eeeeee"; //Definimos el color de las linias;
$c2 = "#ffffff";
if (empty($vec)) return ("No se ha encontrado ningún registro!");
$first = true;
$str = ";
$str .= '<table border="0" cellspacing="0" class="tip1">';
$str .= ' <tr class="tip2">';
foreach ($conf as $value){
if ($first) $str .= '<td width="'.$value["tamany_columna"].'"><span>'.$value["nom_columna"].'</span></td>';
else $str .= '<td width="'.$value["tamany_columna"].'">'.$value["nom_columna"].'</td>';
$first = false;
}
$str .= '</tr>';
$color = $c1;
foreach ($vec as $value){
$first = true;
$str .= '<tr bgcolor="'.$color.'">';
foreach ($conf as $value1){
if ($first){
if (!empty($value1["input"])) $str .= '<td><span><input type="text" value="'.$value[$value1["nom_camp_bd"]].'" size="'.$value1["input"].'" /></span></td>';
else $str .= '<td><span>'.$value[$value1["nom_camp_bd"]].'</span></td>';
} else {
if (!empty($value1["input"])) $str .= '<td><input type="text" value="'.$value[$value1["nom_camp_bd"]].'" size="'.$value1["input"].'" /></td>';
else $str .= '<td>'.$value[$value1["nom_camp_bd"]].'</td>';
}
$first = false;
}
$str .= '</tr>';
if ($color == $c1) $color = $c2;
else $color = $c1;
}
$str .= '</table>';
return ($str);
}
