2011-10-25 45 views
5

Estoy tratando de hacer una tabla dinámica con PHP. Tengo una página que muestra todas las imágenes de una base de datos. Necesito que la tabla sea solo de 5 columnas. Si se devuelven más de 5 imágenes, debería crearse una nueva fila y la visualización del resto de las fotografías continuaría.Creando una tabla dinámica con PHP

¿Alguien puede ayudarnos?

códigos entra aquí: código en la página principal: -

<table> 
    <?php 
     $all_pics_rs=get_all_pics(); 
     while($pic_info=mysql_fetch_array($all_pics_rs)){ 
     echo "<td><img src='".$pic_info['picture']."' height='300px' width='400px' /></td>"; 
      } 
?> 
</table> 

La función get_all_pics():

$all_pics_q="SELECT * FROM pics"; 
     $all_pics_rs=mysql_query($all_pics_q,$connection1); 
     if(!$all_pics_rs){ 
      die("Database query failed: ".mysql_error()); 
     } 
     return $all_pics_rs; 

Este código es la creación de una sola fila. ¡No puedo pensar en cómo puedo obtener múltiples filas ...!

+2

Just FYI - usted está bajando la votación porque no publicó ningún código. – Drew

+0

Si puede editar esta pregunta para proporcionar ejemplos de código relevantes de lo que ha intentado, márquelo para que se revise la atención del moderador. Para editar, simplemente haga clic en el enlace 'editar' debajo de su pregunta. Para marcarlo, haga clic en el enlace 'marcar', seleccione 'otro' y háganos saber que está listo para ser revisado. –

+0

@Tim Post: Realmente no estoy de acuerdo con tu acción. Creo que su pregunta es muy clara. He visto muchísimas preguntas peores en este foro. – Jules

Respuesta

12
$maxcols = 5; 
$i = 0; 

//Open the table and its first row 
echo "<table>"; 
echo "<tr>"; 
while ($image = mysql_fetch_assoc($images_rs)) { 

    if ($i == $maxcols) { 
     $i = 0; 
     echo "</tr><tr>"; 
    } 

    echo "<td><img src=\"" . $image['src'] . "\" /></td>"; 

    $i++; 

} 

//Add empty <td>'s to even up the amount of cells in a row: 
while ($i <= $maxcols) { 
    echo "<td>&nbsp;</td>"; 
    $i++; 
} 

//Close the table row and the table 
echo "</tr>"; 
echo "</table>"; 

no he probado todavía, pero mi suposición es algo por el estilo. Simplemente recorra su conjunto de datos con las imágenes y siempre y cuando no haya hecho 5 <td>, agregue uno. Una vez que alcances 5, cierra la fila y crea una nueva fila.

Se supone que este script le brinda algo como lo siguiente. Obviamente, depende de la cantidad de imágenes que tenga y asumí que 5 (definido en $ maxcols) era la cantidad máxima de imágenes que desea mostrar en una fila.

<table> 
    <tr> 
     <td><img src="image1.jpg" /></td> 
     <td><img src="image1.jpg" /></td> 
     <td><img src="image1.jpg" /></td> 
     <td><img src="image1.jpg" /></td> 
     <td><img src="image1.jpg" /></td> 
    </tr> 
    <tr> 
     <td><img src="image1.jpg" /></td> 
     <td><img src="image1.jpg" /></td> 
     <td>&nbsp;</td> 
     <td>&nbsp;</td> 
     <td>&nbsp;<td> 
    </tr> 
</table> 
+1

Has definido 'i' fuera de para, así que solo úsala para llenarlo con' for (; $ i <5/* número mágico! Bad! * /; ++ $ i) {) {echo ""; } 'entre el cierre'} 'y' echo ""; '. No hay necesidad de dividir ni nada. – RedX

+0

@RedX: Sí, tienes razón. Esa es una forma más fácil de hacerlo. Voy a editar mi respuesta en consecuencia. – Jules

+0

@Jules: ¡Gracias! :-) Lo intentaré ... – maxxon15

2
$max_per_row = 5; 
$item_count = 0; 

echo "<table>"; 
echo "<tr>"; 
foreach ($images as $image) 
{ 
    if ($item_count == $max_per_row) 
    { 
     echo "</tr><tr>"; 
     $item_count = 0; 
    } 
    echo "<td><img src='" . $image . "' /></td>"; 
    $item_count++; 
} 
echo "</tr>"; 
echo "</table>"; 
+0

Gracias @Tom. Lo probaré ... – maxxon15

+0

Gracias, hombre ... ¡Funciona! :) – maxxon15