Ver Mensaje Individual
  #12 (permalink)  
Antiguo 08/01/2008, 13:28
Keysher
 
Fecha de Ingreso: noviembre-2002
Mensajes: 1.341
Antigüedad: 21 años, 5 meses
Puntos: 17
Re: Número de registros de una categoria determinada

Vamos a ver, la idea es la siguiente:

Las tablas HTML se construyen por filas, es decir, primero se escribe la primera fila, con todas sus celdas, y después se salta a la segunda.... y así sucesivamente.

Siguiendo esta lógica al mostrar tus resultados no puedes ir en orden, tienes que adaptarte.

Eso es lo que haría el código, dado un array con unos elementos a mostrar, te construiría la tabla.

Desconozco si hay formas más rápidas y eficaces de hacer lo mismo, esto fue lo primero que se me ocurrió a mi, y de ahí fui tirando.

Lo que no está en el código es la consulta SQL y la asignación de los elementos que te interesen a un array especifico.


Por ejemplo, si en la tabla quieres mostrar dos valores ($row['campo1'] y $row['campo2']) el bucle sería algo así:

Código PHP:

for ($i=1;$i<=mysql_num_rows($id_query);$i++) {
     
$row mysql_fetch_row($id_query);
     
$array_resultados[$i]['campo1'] = $row['campo1'];
     
$array_resultados[$i]['campo2'] = $row['campo2'];

Siendo $id_query la consulta que saca los resultados. Aunque también se puede rellenar el array con datos que vengan de otras fuentes.
También se podría hacer con un while, pero en ese caso habría que llevar a mano la variable de control.

Una vez que el array está lleno es cuando montamos todo el tinglado (la tabla):

Código PHP:

$Num_columnas 
4//Número de Columnas que tendrá la tabla.
 
$i 0
$Columna_actual 1
$Fila_actual 1
$Num_resultados count($array_resultados); 
$Num_filas $Num_resultados $Num_columnas
if (!
is_int($Num_filas)) 
    
$Num_filas++; 
$Num_filas number_format($Num_filas0); 

 
echo 
'<table cellSpacing="0" cellPadding="0" width="100%" border="1">';  //Todo esto es modificable para aplicarle el estilo que quieras

 
// En éste punto se podría poner una cabecera para la tabla.


echo '<tr>'//con estilo si se prefiere.

while($i<$Num_resultados) { 
 
    if (
$Columna_actual $Num_columnas) { 
            echo 
'</tr>'
            echo 
'<tr>'//si quieres un estilo especifico para la tabla iría aquí.
            
$Columna_actual 1
        
$Fila_actual++; 
        } 
 
 
    
$Indice_a_mostrar = (($Columna_actual 1) * $Num_filas $Fila_actual)-1
 
    if ((
$Indice_a_mostrar 1) <= $Num_resultados) { 
 
 
        echo 
'<td'>  // se puede poner estilo para la celda.
 
                
"// AQUÍ ACCEDERÍAS AL ARRAY, USANDO COMO INDICE $Indice_a_mostrar "
                  
        
echo '</td>';  
        
$i++; 
    } 
    
$Columna_actual++; 

 
echo 
'</tr></table>'
Siguiendo con el ejemplo de antes, si en cada celda quieres meter los valores de campo1 y campo2, en donde pone: "// AQUÍ ACCEDERÍAS AL ARRAY, USANDO COMO INDICE $Indice_a_mostrar ", deberías poner algo así:

Código PHP:

echo "$array_resultados[$Indice_a_mostrar]['valor1] $array_resultados[$Indice_a_mostrar]['valor2]"
No sé si me habré explicado bien, y no he comprobado si funciona, quizás haya cometido algún fallo, pero la lógica es esa, y depurándolo un poco debería funcionar bien.