Foros del Web » Programando para Internet » PHP »

Mostrar datos en una tabla horizontal y vertical

Estas en el tema de Mostrar datos en una tabla horizontal y vertical en el foro de PHP en Foros del Web. Buenas tarde, tengo un problema con el siguiente código: Código PHP: <table border="1" cellspacing="0" bgcolor="#9999CC" width="160" height="150"> <?php $resultados = mysql_query ( "SELECT a.idfoto, a.fecha_creacion as fecha,a.ruta_foto as ruta_foto,u.iduser as usuario, af.idalbum as album, af.descripcion as descrip                          FROM fotos a                          INNER JOIN usuarios u on                         a.iduser=u.iduser                         INNER JOIN album_fotos af on                         a.idalbum=af.idalbum                         WHERE a.idalbum=" . ...
  #1 (permalink)  
Antiguo 27/02/2012, 13:22
 
Fecha de Ingreso: mayo-2011
Mensajes: 15
Antigüedad: 12 años, 10 meses
Puntos: 0
Mostrar datos en una tabla horizontal y vertical

Buenas tarde, tengo un problema con el siguiente código:
Código PHP:
<table border="1" cellspacing="0" bgcolor="#9999CC" width="160" height="150">

<?php
$resultados
=mysql_query("SELECT a.idfoto, a.fecha_creacion as fecha,a.ruta_foto as ruta_foto,u.iduser as usuario, af.idalbum as album, af.descripcion as descrip 
                        FROM fotos a 
                        INNER JOIN usuarios u on
                        a.iduser=u.iduser
                        INNER JOIN album_fotos af on
                        a.idalbum=af.idalbum
                        WHERE a.idalbum="
.$id.";");

$limite=0;
$i=0;
 while(
$datos=mysql_fetch_array($resultados))

{
         
$fotourl=$datos['ruta_foto'];
$ruta="imagenes/eventos/";
$ruta=$ruta.$fotourl;
  if (
$limite === 0)
  {
    echo 
'<tr>';
  }

  if (
$limite <= 3)
  {
    
?><td>
  
    <a href="seccion_fotos_nro.php?codx=<?php echo $datos['idfoto']; ?>&&cod=<?php echo $datos['album']?>"><img src="<?php echo $ruta?>" width="160" height="150" /></a>
   </td><?php
$limite
++;
   
  }
  elseif (
$limite 3)
  { 
    echo 
'</tr>'
    
    
$limite=0;
  }
 }

?>

 
</table>
Lo que deseo es que si inserto mayor de 5 fotos en la primera fila deben aparecerme solo 4 fotos, y en la siguiente fila, las 3 restante. Y así si tuviera muchas más fotos, que muestre 4 fotos por fila.

Lo he estado intentanto con el código que les he dejado. Había insertado 7 fotos, pero al mostrar me salen 4 primeras en una fila, no me muestra la 5ta dentro de la misma fila, pero es como si la contara, y las últimas dos que me quedan las muestra en la siguiente fila.

Espero entiendan lo que he tratado de explicarles, y ojalá puedan ayudarme. Saludos.
  #2 (permalink)  
Antiguo 27/02/2012, 14:11
Avatar de repara2  
Fecha de Ingreso: septiembre-2010
Ubicación: München
Mensajes: 2.445
Antigüedad: 13 años, 7 meses
Puntos: 331
Respuesta: Mostrar datos en una tabla horizontal y vertical

Reemplaza el for por tu while:

Código PHP:
Ver original
  1. <?php
  2. $fotos = array(1,2,3,4,5,6,7,8,9,0,11,12,13,14,15);
  3. $limite = 4;
  4.  
  5. $table = "<table>";
  6.  
  7. for($i = 1;$i<count($fotos);$i++){
  8.     if($i%$limite==1)$table .="<tr>";
  9.     $table .= "<td>{$fotos[$i]}</td>";
  10.     if($i%$limite==0)$table .="</tr>";
  11. }
  12. $table .= "</table>";
  13.  
  14. echo $table;
  15. ?>

Saludos
__________________
Fere libenter homines, id quod volunt, credunt.
  #3 (permalink)  
Antiguo 27/02/2012, 15:09
 
Fecha de Ingreso: mayo-2011
Mensajes: 15
Antigüedad: 12 años, 10 meses
Puntos: 0
Respuesta: Mostrar datos en una tabla horizontal y vertical

Genial @repara2, me ha servido de maravilla, aunque tuve que craner un poquito como hacerlo con mysql, si a alguien le sirve, aquí dejo el código:

Código PHP:
<?php
$resultados
=mysql_query("aqui_tu_consulta");
 
$limite 4;
     


$table "<table border=\"1\"  cellspacing=\"0\" bgcolor=\"#9999CC\" width=\"160\" height=\"150\" >";
    for(
$i 1;$i<mysql_num_rows($resultados);$i++){
        
$fotourl=mysql_result($resultados,$i,"ruta_foto");
$ruta="imagenes/eventos/";
$ruta=$ruta.$fotourl;
        if(
$i%$limite==1)$table .="<tr>";
        
$table .= "<td><img src=\"$ruta\" width=\"200\" height=\"200\"/></td>";
        if(
$i%$limite==0)$table .="</tr>";
    }
    
$table .= "</table>";
     
    echo 
$table;

$i++;
}
?>
  #4 (permalink)  
Antiguo 27/02/2012, 15:31
 
Fecha de Ingreso: mayo-2011
Mensajes: 15
Antigüedad: 12 años, 10 meses
Puntos: 0
Respuesta: Mostrar datos en una tabla horizontal y vertical

Heyy, me acabo de dar cuenta de un problema, que ya la varible $i del for está en 1, no me cuenta la primera imagen, lo pusé en 0, pero el resultado me sale como "descuadrado se podría decir.
En la primera fila me muestra la 1era foto, en la 2da me muestra 4 fotos, y sale una 3era fila con dos fotos.

¿Cómo puedo solucionar esto?
  #5 (permalink)  
Antiguo 28/02/2012, 00:27
Avatar de repara2  
Fecha de Ingreso: septiembre-2010
Ubicación: München
Mensajes: 2.445
Antigüedad: 13 años, 7 meses
Puntos: 331
Respuesta: Mostrar datos en una tabla horizontal y vertical

Necesitas empezar a contar en el indice 0 para poder abrir la fila correctamente, puedes solucionarlo así:

Código PHP:
Ver original
  1. $fotourl=mysql_result($resultados,$i-1,"ruta_foto");
__________________
Fere libenter homines, id quod volunt, credunt.

Etiquetas: horizontal, sql, tabla, vertical, usuarios
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 17:13.