Foros del Web » Programando para Internet » PHP »

Query en columnas

Estas en el tema de Query en columnas en el foro de PHP en Foros del Web. Estaba buscando la manera de dividir los resultados de un query en columnas y lineas, por ejemplo si tengo 5 registros que se me pongan ...
  #1 (permalink)  
Antiguo 03/08/2004, 07:34
Avatar de Gryphus  
Fecha de Ingreso: febrero-2003
Ubicación: Spain
Mensajes: 216
Antigüedad: 21 años, 2 meses
Puntos: 0
Query en columnas

Estaba buscando la manera de dividir los resultados de un query en columnas y lineas, por ejemplo si tengo 5 registros que se me pongan en 4 columnas cada uno y el restante abajo de la primera columna, en una segunda linea. Mire el codigo que hay en los FAQS pero no me sale.. ahora mismo tengo 5 registros divididos en 4 columnas y lo unico que hace es mostrarme cuatro columnas en una linea con 1 registro en cada una, o sea no me muestra el 5º registro.
Este es el codigo que uso:
Código PHP:
<?php 
$connexion 
mysql_connect("SERVIDOR","USUARIO","CONTRASEÑA");
mysql_select_db("BASE_DE_DATOS"$connexion); 
$result mysql_query("SELECT * FROM fanart");
$rows mysql_num_rows($result);
echo 
"<table align=center>";
$columnes 4
echo 
"<tr><td colspan=$columnes>$rows Resultados</td></tr>";
if (
$rows=0){echo "<tr><td colspan=$columnes>No hay resultados en la BD.</td></tr> ";} 
for (
$i=1$rows mysql_fetch_row($result); $i++) {
$resto = ($i $columnes); # Número de celda del <tr> en que nos encontramos
if ($resto == 1) {echo "<tr>";} # Si es la primera celda, abrimos <tr>
while ($row3 = @mysql_fetch_array($result)) {
    echo 
"<td>$row3[nick]</td>"
if (
$resto == 0) {echo "</tr>";} # Si es la última celda, cerramos </tr>
}
if (
$resto <> 0) { # Si el resultado no es múltiple de $columnes acabamos de rellenar los huecos
$ajust $columnes $resto# Número de huecos necesarios
for ($j 0$j $ajust$j++) {echo "<td>&nbsp;</td>";}
echo 
"</tr>"# Cerramos la última línea </tr>
}
}
mysql_close($connexion);
echo 
"</table>";
?>
Gracias de antemano ^^
  #2 (permalink)  
Antiguo 03/08/2004, 07:50
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 21 años, 10 meses
Puntos: 16
Hola,

El while dentro del for sobra. El for ya recorre todo el resultado. Ademas, tal como tienes, no te muestra el primer registro. Asi que en lugar de
Código PHP:
while ($row3 = @mysql_fetch_array($result)) {
    echo 
"<td>$row3[nick]</td>"
deja
Código PHP:
echo "<td>$rows[nick]</td>"
Tambien debes quitar un } de cierre.

Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #3 (permalink)  
Antiguo 03/08/2004, 08:03
Avatar de Gryphus  
Fecha de Ingreso: febrero-2003
Ubicación: Spain
Mensajes: 216
Antigüedad: 21 años, 2 meses
Puntos: 0
Ahora no me sale ningun registro, el codigo esta asi:
Código PHP:
<?php 
$connexion 
mysql_connect("server","user","pass");
mysql_select_db("db"$connexion); 
$result mysql_query("SELECT * FROM fanart");
$rows mysql_num_rows($result);
echo 
"<table align=center>";
$columnes 4
echo 
"<tr><td colspan=$columnes>$rows Resultados</td></tr>";
if (
$rows=0){echo "<tr><td colspan=$columnes>No hay resultados en la BD.</td></tr> ";} 
for (
$i=1$rows mysql_fetch_row($result); $i++) {
$resto = ($i $columnes); # Número de celda del <tr> en que nos encontramos
if ($resto == 1) {echo "<tr>";} # Si es la primera celda, abrimos <tr>
echo "<td>$rows[nick]</td>"
if (
$resto == 0) {echo "</tr>";} # Si es la última celda, cerramos </tr>
}
if (
$resto <> 0) { # Si el resultado no es múltiple de $columnes acabamos de rellenar los huecos
$ajust $columnes $resto# Número de huecos necesarios
for ($j 0$j $ajust$j++) {echo "<td>&nbsp;</td>";}
echo 
"</tr>"# Cerramos la última línea </tr>
}
mysql_close($connexion);
echo 
"</table>";
?>
Saludos y gracias ^^

EDIT: Gracias, ya funciona ;)

Última edición por Gryphus; 03/08/2004 a las 09:49
  #4 (permalink)  
Antiguo 03/08/2004, 08:22
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 21 años, 10 meses
Puntos: 16
Bueno, parece que el ejemplo usar mysql_fetch_row(), por lo que no acepta los nombres de campo como indices. Asi que cambialo por mysql_fetch_array().

saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
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 12:57.