2012-01-25 18 views
7

Estoy haciendo un foro en PHP. Tengo que mostrar todas las categorías del foro en una tabla, y para hacerlo, he usado un ciclo while. Sin embargo, quiero tener solo 3 td en cada fila de la mesa. Para recorrer las categorías, estoy usando un ciclo while con la consulta, por lo que no creo que pueda usar el módulo aquí.Insertar tr después de cada tercer ciclo

+0

mostrarnos su código –

+0

Usted podría utilizar el operador de módulo '%' simplemente creando una variable de incremento '$ i = 0' antes del ciclo e incrementándola' ++ $ i' en cada iteración del ciclo while. – rdlowrey

Respuesta

13

¿Por qué no puedes usar el módulo? Simplemente agregue un contador en alguna parte, y si golpea % 3 == 0 reinicie el contador y haga sus cosas.

Es posible que tenga que hacer un poco más si es el primero y el último y cosas por el estilo, pero no hay ninguna razón para no usar un módulo con un tiempo.

$i=0; 
while(guard()){ 
    if($i % 3 == 0){ 
     //ploing 
    } 
$i++ 
} 
+0

¡Ah, brillante! Tengo que aprender el modulo. – user1169875

+7

+1 para excelentes efectos de sonido ... – squarecandy

2

No he probado el código, pero la lógica debería funcionar:

<Table> 
<?php 
$i = 0; 
while($row = mysql_fetch_array($result)){ 
    if($i == 0){ 
     echo"<TR>"; 
    } 
    echo"<td>".$row[0]."<TD>"; 
    $i++; 
    if($i == 3) 
    { 
     $i = 0; 
     echo"</tr>" 
    } 
} 
if($i ==1){ 
    echo "<td></td><td></td></tr>"; 
} 
if($i ==2) 
{ 
    echo "<td></td></tr>"; 
} 
?> 
<table> 
11

Este código se cerrará ningún filas adicionales:

<table> 
<?php 
$i = 0; 
while($row = mysql_fetch_array($result)){ 
    $i++; 
    //if this is first value in row, create new row 
    if ($i % 3 == 1) { 
     echo "<tr>"; 
    } 
    echo "<td>".$row[0]."</td>"; 
    //if this is third value in row, end row 
    if ($i % 3 == 0) { 
     echo "</tr>"; 
    } 
} 
//if the counter is not divisible by 3, we have an open row 
$spacercells = 3 - ($i % 3); 
if ($spacercells < 3) { 
    for ($j=1; $j<=$spacercells; $j++) { 
     echo "<td></td>"; 
    } 
    echo "</tr>"; 
} 
?> 
</table> 
+0

Gracias hombre! ¡Esta comunidad es absolutamente la más útil que he encontrado! – user1169875

Cuestiones relacionadas