Foros del Web » Programando para Internet » PHP »

Encolumnar resultados en forma sencilla

Estas en el tema de Encolumnar resultados en forma sencilla en el foro de PHP en Foros del Web. Hola amigos, me ha pasado un monton de veces que necesitaba para diferentes proyectos mostrar resultados de una base de datos en forma encolumnada por ...
  #1 (permalink)  
Antiguo 08/10/2011, 08:15
 
Fecha de Ingreso: septiembre-2009
Mensajes: 402
Antigüedad: 14 años, 7 meses
Puntos: 6
Encolumnar resultados en forma sencilla

Hola amigos, me ha pasado un monton de veces que necesitaba para diferentes proyectos mostrar resultados de una base de datos en forma encolumnada por ejemplo en 4 o 5 o x columnas, y buscaba pero siempre encontrara codigos largos y complejos de implementar, entonces, aqui les dejo una forma que funciona a la perfeccion y es super sencillo de aplicar, donde cada uno puede adaptarlo a sus necesidades, espero les sea de utilidad como a mi.

Cita:
// realizamos la consulta para seleccionar en nuestra base de datos
$c= "select * from usuarios"; //cada uno le pondrá la condición que desee
$r= mysql_query($c) or die (mysql_error());
$n= mysql_num_rows($r) or die (mysql_error());

$columnas= 5; //aqui cada uno pondrá el número de columnas que desee
$filas= $n; //va a ser igual a la cantidad de registros que tengamos

echo "<table>";
for ($fila=0;$fila<$n;$fila++)
{
echo "<tr>";
for ($columna=0;$columna<5;$columna++)
{
echo "<td>";
echo " ".($row['usuario']); //cada uno elegirá que desea visualizar
echo "</td>";
}
echo "</tr>";
}
echo "</table>";
quedará a criterio de cada uno el formateo que deseen darle a los registros y a las tablas , espero les haya ayudado.
saludos
ariel
  #2 (permalink)  
Antiguo 08/10/2011, 08:28
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Aporte: Encolumnar resultados en forma sencilla

Que curioso aporte, aquí hay uno igual:
http://www.forosdelweb.com/f18/aport...tablas-618528/
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 08/10/2011, 10:45
 
Fecha de Ingreso: septiembre-2009
Mensajes: 402
Antigüedad: 14 años, 7 meses
Puntos: 6
Respuesta: Aporte: Encolumnar resultados en forma sencilla

claro! si de ahi lo saque, pero como no guarde el link nunca mas lo encontre y recorde que lo habia guardado entonces lo posteé de nuevo x las dudas!
saludos
  #4 (permalink)  
Antiguo 14/10/2011, 12:15
 
Fecha de Ingreso: septiembre-2009
Mensajes: 402
Antigüedad: 14 años, 7 meses
Puntos: 6
Respuesta: Aporte: Encolumnar resultados en forma sencilla

ahora una consulta, el codigo funciona bien, pero cuando le aplico esta funcion.

Código PHP:
Ver original
  1. function redimensionar_miembros($ruta,$ancho,$alto){
  2. $ancho= 40;
  3. $alto= 40;
  4.  
  5. //$imagen= $_FILES['file']['name'];
  6. $ruta= $_SESSION['imagen2'];
  7. //$ruta= "IMAGENES/".$imagen;
  8. /*$dim[0]= 100;
  9. $dim[1]= 100;*/
  10. //Obtenemos las dimensiones, la ruta es absoluta.
  11. $dim = getimagesize($ruta);
  12. /*getimagesize() pasa un array a la variable
  13. $dim tal que $dim[0] contiene el ancho de la imagen  
  14. y dim[1] contiene el alto.*/
  15. if($dim[1]){
  16. //Para asegurarnos de que dim[1] es diferente de cero
  17. $cociente = $dim[0] / $dim[1];
  18. }
  19. if($alto){
  20. //Para asegurarnos de que alto es diferente de cero
  21. $coc_max = $ancho / $alto;
  22. }
  23.  
  24.     if(($dim[0]<=$ancho)&&($dim[1]<=$alto)){
  25.     /*En este caso no pasa nada y  
  26.     la imagen se imprime con su tama&ntilde;o original*/
  27.     $ancho = $dim[0];
  28.     $alto = $dim[1];
  29.     }else{
  30.         if($cociente>=$coc_max){
  31.         /*En este caso el factor m&aacute;s restrictivo
  32.         va a ser el ancho de la foto*/
  33.         $alto = $ancho / $cociente;
  34.         }else{
  35.         /*En este caso el factor restrictivo  
  36.         va a ser la altura de la foto*/
  37.         $ancho = $alto * $cociente;
  38.         }
  39.     }
  40.     echo "<img src='$ruta' width='$ancho' height='$alto' align=top>";
  41.      
  42. }

me tira este error

Warning: getimagesize() [function.getimagesize]: Filename cannot be empty in /www/tipsnet.com.ar/htdocs/CP/COLUMNAR_RESULTADOS.php

y no entiendo porque
  #5 (permalink)  
Antiguo 14/10/2011, 12:18
Avatar de andresdzphp
Colaborador
 
Fecha de Ingreso: julio-2011
Ubicación: $this->Colombia;
Mensajes: 2.749
Antigüedad: 12 años, 9 meses
Puntos: 793
Respuesta: Aporte: Encolumnar resultados en forma sencilla

Tienes session_start() en el inicio de el archivo php? Imprime el contenido de:

Código PHP:
Ver original
  1. $ruta= $_SESSION['imagen2'];

Seguro que no se está pasando correctamente esa sesión.

Saludos.
__________________
Si sabemos como leer e interpretar el manual será mucho más fácil aprender PHP. En lugar de confiar en ejemplos o copiar y pegar - PHP
  #6 (permalink)  
Antiguo 14/10/2011, 18:25
 
Fecha de Ingreso: septiembre-2009
Mensajes: 402
Antigüedad: 14 años, 7 meses
Puntos: 6
Respuesta: Aporte: Encolumnar resultados en forma sencilla

hola, muchas gracias por la respuesta, si tiene puesto session_start() al principio de la pagina, por eso no entiendo porque me aparece tal mensaje, ke puede ser?
Cita:
Iniciado por andresdzphp Ver Mensaje
Tienes session_start() en el inicio de el archivo php? Imprime el contenido de:

Código PHP:
Ver original
  1. $ruta= $_SESSION['imagen2'];

Seguro que no se está pasando correctamente esa sesión.

Saludos.
  #7 (permalink)  
Antiguo 14/10/2011, 18:28
 
Fecha de Ingreso: septiembre-2009
Mensajes: 402
Antigüedad: 14 años, 7 meses
Puntos: 6
Respuesta: Aporte: Encolumnar resultados en forma sencilla

o sea ese mensaje me aparece recien cuando hay ingresados mas de 2 registros, si hay solo uno, no aparece el mensaje y no se porque

Cita:
Iniciado por andresdzphp Ver Mensaje
Tienes session_start() en el inicio de el archivo php? Imprime el contenido de:

Código PHP:
Ver original
  1. $ruta= $_SESSION['imagen2'];

Seguro que no se está pasando correctamente esa sesión.

Saludos.
  #8 (permalink)  
Antiguo 14/10/2011, 18:30
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: Encolumnar resultados en forma sencilla

apustilnik, si esto trataba de ser un aporte, lo mejor era que colocaras tu duda en un nuevo tema, porque realmente no tiene nada que ver tu manejo de sesiones con "encolumnar resultados de forma sencilla".
__________________
- León, Guanajuato
- GV-Foto
  #9 (permalink)  
Antiguo 14/10/2011, 19:12
 
Fecha de Ingreso: septiembre-2009
Mensajes: 402
Antigüedad: 14 años, 7 meses
Puntos: 6
Respuesta: Encolumnar resultados en forma sencilla

el aporte estaba bien hecho, porke el codigo funcionaba perfecto pero de repente comenzo a dar error y no se porke y yo no meti el manejo de sesiones, lo comentaron por ahi, de todos modos la intencion era hacer un aporte todos nos podemos equivocar
Cita:
Iniciado por Triby Ver Mensaje
apustilnik, si esto trataba de ser un aporte, lo mejor era que colocaras tu duda en un nuevo tema, porque realmente no tiene nada que ver tu manejo de sesiones con "encolumnar resultados de forma sencilla".
  #10 (permalink)  
Antiguo 14/10/2011, 19:20
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: Encolumnar resultados en forma sencilla

Cita:
Iniciado por apustilnik
el aporte estaba bien hecho, porke el codigo funcionaba perfecto pero de repente comenzo a dar error y no se porke... ...de todos modos la intencion era hacer un aporte todos nos podemos equivocar
No digo que el aporte este bien o mal, no soy quien para juzgarlo.

Cita:
Iniciado por apustilnik
yo no meti el manejo de sesiones, lo comentaron por ahi
El punto es que tienes problemas con la sesion, eso hace que la variable $ruta quede como no definida, nula o vacia y por eso obtienes el mensaje de error, lo cual no tiene relacion alguna con el tema.

O sea... si, tu metiste el manejo de sesiones.

Claro, indirectamente, porque tambien getimagesize() nada tiene que ver con el aporte... o si?
__________________
- León, Guanajuato
- GV-Foto
  #11 (permalink)  
Antiguo 14/10/2011, 19:28
 
Fecha de Ingreso: septiembre-2009
Mensajes: 402
Antigüedad: 14 años, 7 meses
Puntos: 6
Respuesta: Encolumnar resultados en forma sencilla

el problema no es la sesion, ya encontre el problema, pero no detecto como resolverlo, el problema es el siguiente

aqui el codigo:

c_member= "select * from club_miembros where identificador= '".$id."' order by rand() limit 10";
$r_member= mysql_query($c_member) or die (mysql_error());
$n_member= mysql_num_rows($r_member);

$columnas= 4;
$filas= $n_member;

function redimensionar_miembros($ruta,$ancho,$alto){
$ancho= 40;
$alto= 40;

//$imagen= $_FILES['file']['name'];
$ruta= $_SESSION['imagen2'];
//$ruta= "IMAGENES/".$imagen;
/*$dim[0]= 100;
$dim[1]= 100;*/
//Obtenemos las dimensiones, la ruta es absoluta.
$dim = getimagesize($ruta);
/*getimagesize() pasa un array a la variable
$dim tal que $dim[0] contiene el ancho de la imagen
y dim[1] contiene el alto.*/
if($dim[1]){
//Para asegurarnos de que dim[1] es diferente de cero
$cociente = $dim[0] / $dim[1];
}
if($alto){
//Para asegurarnos de que alto es diferente de cero
$coc_max = $ancho / $alto;
}

if(($dim[0]<=$ancho)&&($dim[1]<=$alto)){
/*En este caso no pasa nada y
la imagen se imprime con su tama&ntilde;o original*/
$ancho = $dim[0];
$alto = $dim[1];
}else{
if($cociente>=$coc_max){
/*En este caso el factor m&aacute;s restrictivo
va a ser el ancho de la foto*/
$alto = $ancho / $cociente;
}else{
/*En este caso el factor restrictivo
va a ser la altura de la foto*/
$ancho = $alto * $cociente;
}
}
echo "<img src='$ruta' width='$ancho' height='$alto' align=top>";

}


Código PHP:
Ver original
  1. echo "<table width=234px border=1 cellspacing=3 cellpadding=0 >";
  2. for ($fila=0;$fila<$n_member;$fila++) //el problema es que por ejmplo si hay solo dos registros en la base, y el limite de columnas es 4, me estara creando dos filas de tabla, para lo cual en la segunda fila no habra hipoteticamente nada, por eso me da error en la funcion redimensionar pero no encuentro como resolverlo
  3. {
  4. echo "<tr>";
  5. for ($columna=0;$columna<$n_member;$columna++)
  6. {
  7. $row= mysql_fetch_array($r_member);
  8. $usuario= ($row['usuario']);
  9. $imagen2= $row['imagen'];
  10. $_SESSION['imagen2'] = $imagen2;
  11. $ruta= $_SESSION['imagen2'];
  12.  
  13. echo "<td>";
  14. echo redimensionar_miembros($ruta,$ancho,$alto);
  15. echo "</td>";
  16.  
  17. }
  18. echo "</tr>";
  19. }
  20. echo "</table>";

//el problema es que por ejmplo si hay solo dos registros en la base, y el limite de columnas es 4, me estara creando dos filas de tabla, para lo cual en la segunda fila no habra hipoteticamente nada, por eso me da error en la funcion redimensionar pero no encuentro como resolverlo0.{
  #12 (permalink)  
Antiguo 14/10/2011, 19:38
 
Fecha de Ingreso: septiembre-2009
Mensajes: 402
Antigüedad: 14 años, 7 meses
Puntos: 6
Respuesta: Encolumnar resultados en forma sencilla

................................

Última edición por apustilnik; 14/10/2011 a las 19:48
  #13 (permalink)  
Antiguo 14/10/2011, 20:20
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: Encolumnar resultados en forma sencilla

Que te devuelve mysql_fetch_array() cuando ya recorriste todos los registros devueltos en la consulta?

No es lo mas adecuado, pero, bien podrias:
Código PHP:
Ver original
  1. if($row = mysql_fetch_array($r_member)) {
  2.     // Muestras la imagen
  3. } else {
  4.     // Muestras una celda vacia
  5. }

Digo que no es lo mas optimo porque, si tienes contemplado mostrar 12 imagenes en 3 filas y solo tienes 2... se van a crear muchas celdas vacias.
__________________
- León, Guanajuato
- GV-Foto
  #14 (permalink)  
Antiguo 15/10/2011, 11:40
 
Fecha de Ingreso: septiembre-2009
Mensajes: 402
Antigüedad: 14 años, 7 meses
Puntos: 6
Respuesta: Encolumnar resultados en forma sencilla

ya encontre resolverlo mediante un codigo que aportaron por alli, que es super sencillo y funciona a la perfeccion!!
aqui el codigo:

Código PHP:
Ver original
  1. $c= "select * from tabla";
  2. $r= mysql_query($c) or die (mysql_error());
  3.  
  4. $filas = 2;//o las filas que quieras que tenga la tabla como máximo
  5. $columnas = 4;//o las columnas que quieras  
  6. $final = 0;  
  7. echo "<table width=234px border=\"0\">";  
  8. for($i=0;$i<=$filas && $final==0;$i++){  
  9.     echo "<tr>";  
  10.     $n = 1;  
  11.     while(($n%($columnas+1)) != 0){  
  12.         echo "<td>";          
  13.         if($row = mysql_fetch_array($r)){
  14.          
  15.          
  16.             echo $row["nombre"];//o lo que quieras escribir en la celda.  
  17.         }else{  
  18.             echo "&nbsp";  
  19.             $final = 1;  
  20.         }  
  21.         echo "</td>";      
  22.         $n++;  
  23.     }  
  24.     echo "</tr>";  
  25. }  
  26.  
  27. echo "</td></tr></table>";

espero les sea de utilidad como a mi
saludos y gracias por las respuestas

Última edición por apustilnik; 15/10/2011 a las 14:45

Etiquetas: mysql, registro, resultados, sencilla, tabla, usuarios, formulario
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

SíEste tema le ha gustado a 1 personas




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