2012-01-25 8 views
7

Tworzę forum w PHP. Muszę wyświetlić wszystkie kategorie forum w tabeli, a do tego użyłem pętli while. Jednak chcę mieć tylko 3 td w każdym rzędzie tabeli. Aby przeglądać kategorie, używam pętli while z zapytaniem, więc nie sądzę, żebym mógł użyć tutaj modulusa.Wstaw tr po co trzeciej pętli

+0

pokazać nam swój kod –

+0

Można użyć operator modulus '%' po prostu tworząc zmienną inkrementującą '$ i = 0' przed pętlą i zwiększając ją' ++ $ i' w każdej iteracji pętli while. – rdlowrey

Odpowiedz

13

Dlaczego nie możesz użyć modułu? Po prostu dodaj gdzieś licznik, a jeśli trafi on % 3 == 0 zresetuj licznik i zrób swoje rzeczy.

Być może trzeba będzie zrobić dodatkowe, jeśli chodzi o pierwszy i ostatni, i takie tam, ale nie ma powodu, aby nie używać modulo przez pewien czas.

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

Ah, genialny! Muszę się powiesić na tym module. – user1169875

+7

+1 dla doskonałych efektów dźwiękowych ... – squarecandy

2

nie testowałem ten kod, ale logika powinno działać:

<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

Kod ten zostanie zamknięty żadnych dodatkowych rzędów:

<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

Dziękuję człowieku! Ta społeczność jest absolutnie najbardziej pomocna, z jaką się zetknąłem! – user1169875