Foros del Web » Programando para Internet » PHP »

PHP Mostrar de 4 en 4

Estas en el tema de PHP Mostrar de 4 en 4 en el foro de PHP en Foros del Web. Hola, Quiero mostrar 9 imágenes de una ddbb en miniaturas. Mi idea es mostrarlas de 3 en 3, es decir: 1 2 3 4 5 ...
  #1 (permalink)  
Antiguo 04/04/2009, 18:41
 
Fecha de Ingreso: noviembre-2008
Mensajes: 259
Antigüedad: 16 años
Puntos: 1
PHP Mostrar de 4 en 4

Hola,

Quiero mostrar 9 imágenes de una ddbb en miniaturas.

Mi idea es mostrarlas de 3 en 3, es decir:
1 2 3
4 5 6
7 8 9

El problema es que cuando hago el echo y construyo la tabla, no sé cómo definir que cambie de fila al cabo de 3 imágenes.

Alguna sugerencia?

GraciaS!
  #2 (permalink)  
Antiguo 04/04/2009, 18:45
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 16 años, 4 meses
Puntos: 416
Respuesta: PHP Mostrar de 4 en 4

Con el operador % (modulo) de PHP.

Antes de empezar el ciclo inicializas una variable:
$i = 1;
Luego en cada vuelta del bucle:
if($i%3 == 0) { //si es multiplo de 3
//dibujo una fila
}

PD: ¿Que no era mostrar de 4 en 4? xD
  #3 (permalink)  
Antiguo 04/04/2009, 19:28
 
Fecha de Ingreso: noviembre-2008
Mensajes: 259
Antigüedad: 16 años
Puntos: 1
Respuesta: PHP Mostrar de 4 en 4

Me darías un ejemplo?

No comprendo bien cómo usar dicho operador.

Muchas Gracias!
  #4 (permalink)  
Antiguo 04/04/2009, 19:37
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 16 años, 4 meses
Puntos: 416
Respuesta: PHP Mostrar de 4 en 4

<?php
for($x = 1; $x <= 10; $x++) {
if($x%3 == 0) {
echo "$x es multiplo de 3<br />\n";
}
}
?>
  #5 (permalink)  
Antiguo 04/04/2009, 19:53
 
Fecha de Ingreso: noviembre-2008
Mensajes: 259
Antigüedad: 16 años
Puntos: 1
Respuesta: PHP Mostrar de 4 en 4

Genial,

Pero me sigue sin salir!!

Mira, lo que necesito es imprimir las fotos mediante este ECHO:
echo "<img src=\"../Fotos/TikvaII/"."$row[Foto]\" BORDER=0 WIDTH=150 HEIGHT=100></a></td>";

Y que salgan 4 por fila y cambie a la siguiente fila.

No sé cómo aplicar el for en este caso!

Mil Gracias!
  #6 (permalink)  
Antiguo 04/04/2009, 20:38
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 16 años, 4 meses
Puntos: 416
Respuesta: PHP Mostrar de 4 en 4

No tiene que ser un for, puede ser cualquier tipo de bucle. Era simplemente un ejemplo de como funciona el operador %.
  #7 (permalink)  
Antiguo 04/04/2009, 23:48
 
Fecha de Ingreso: marzo-2009
Mensajes: 35
Antigüedad: 15 años, 8 meses
Puntos: 0
Respuesta: PHP Mostrar de 4 en 4

Modifica este Codigo segunrequerimientos..:


Código HTML:
<table width="100%">  
 <?php  
 $numcolumnas = 3;  
  $consulta = mysql_query("SELECT * FROM tabla");  
  $total_resultados = mysql_num_rows($consulta);  
   if ($total_resultados>0) {  
   echo "<tr><td colspan=\"$numcolumnas\">Hay $total_resultados elementos</td></tr>";  
   $i = 1;  
   while($fila = mysql_fetch_array($consulta)){  
     $resto = ($i % $numcolumnas);  
     if($resto == 1){ /*si es el primer elemento creamos una nueva fila*/  
     echo "<tr>";  
     }  
    echo "<td>".$fila['campo']."</td>";/*mostramos el valor del campo especificado*/  
     if($resto == 0){/*cerramos la fila*/  
    echo "</tr>";  
     }  
     $i++;  
     }  
    if($resto != 0){/*Si en la última fila sobran columnas, creamos celdas vacías*/  
     for ($j = 0; $j < ($numcolumnas - $resto); $j++){  
     echo "<td></td>";  
     }  
     echo "</tr>";  
    }  
     }else{  
    echo "<tr><td>0 elementos encontrados</td></tr> ";  
    }  
     ?>  
     </table> 

$numcolumnas = 3; debs cambiarlo x 4.
xau espero te sirva sino estoy en ello ahora...
  #8 (permalink)  
Antiguo 05/04/2009, 03:14
 
Fecha de Ingreso: noviembre-2008
Mensajes: 259
Antigüedad: 16 años
Puntos: 1
Respuesta: PHP Mostrar de 4 en 4

Hola,

Lo he implementado pero me muestra solamente 2 imágenes y además es la misma imagen.

Así me quedaba el código:

Código PHP:
<table width="100%">  
 <?php  
 $numcolumnas 
4;  
$consulta mysql_query("SELECT * FROM fotos");  
$total_resultados mysql_num_rows($consulta);
$rows mysql_fetch_array($consulta);  
   if (
$total_resultados>0) {  
      echo 
"hola";
   
$i 1;  
   while(
$fila mysql_fetch_array($consulta)){  
     
$resto = ($i $numcolumnas);  
     if(
$resto == 1){ /*si es el primer elemento creamos una nueva fila*/  
     
echo "<tr>";  
     }  
    echo 
"<td>".$fila['campo']."</td>";/*mostramos el valor del campo especificado*/  
     
if($resto == 0){/*cerramos la fila*/  
    
echo "<tr>"."<a href='Fotos/fotos.php?id=".($rows[idFoto])."'><img src=\"$fila[RutaAlbum]"."/"."$rows[Foto]\"  BORDER=1 WIDTH=130 HEIGHT=86></a>";  
     }  
     
$i++;  
     }  
    if(
$resto != 0){/*Si en la última fila sobran columnas, creamos celdas vacías*/  
     
for ($j 0$j < ($numcolumnas $resto); $j++){  
     echo 
"<td></td>";  
     }  
     echo 
"</tr>";  
    }  
     }else{  
    echo 
"<tr><td>0 elementos encontrados</td></tr> ";  
    }  
     
?>  
     </table>
GraciaS!!
  #9 (permalink)  
Antiguo 05/04/2009, 10:18
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 16 años, 4 meses
Puntos: 416
Respuesta: PHP Mostrar de 4 en 4

Mira:

<?php
$consulta = mysql_query("SELECT * FROM fotos");
echo '<table>';
echo ' <tr>';
$i = 1;
while($row = mysql_fetch_assoc($consulta)) {
echo ' <td><img src="'.$row['foto'].'" /></td>'; //solo un ejemplo, imprime lo que quieras aqui
if($i%3 == 0) {
echo ' </tr>';
echo ' <tr>';
}

$i++;
}
echo " </tr>";
echo "</table>";
?>

PD: Ya para que no queden filas sin 3 columnas al final, puedes hacer el resto de $i%3, y hacer un for para imprimir las columnas faltantes, tal como hizo andystefano2.

Última edición por Ronruby; 05/04/2009 a las 10:32
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 21:19.