Mostrar información en una tabla dinámica (PHP)

05-04-2005 > GurX


Mostrar 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);
}

Mostrar o escribir comentarios (dudas) sobre este artículo