2012-01-25 23 views
7

我正在PHP中創建一個論壇。我必須在表格中顯示所有論壇類別,爲此,我使用了一個while循環。但是,我想每個表格行只有3個td。爲了遍歷類別,我在查詢中使用了一個while循環,所以我不認爲我可以在這裏使用模數。在每第三個循環之後插入tr

+0

告訴我們你的代碼 –

+0

你可以使用通過在循環之前簡單地創建一個增量變量'$ i = 0',並在while循環的每次迭代中遞增'++ $ i',模運算符'%'。 – rdlowrey

回答

13

爲什麼你不能使用模數?只需在某個地方添加一個計數器,並且如果它擊中% 3 == 0重置計數器並做你的東西。

您可能需要爲第一個和最後一個以及類似的東西做一些額外的if,但沒有理由不使用模塊。

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

啊,輝煌!我必須得到這個模數的東西。 – user1169875

+7

+1優秀的聲音效果... – squarecandy

2

我沒有測試的代碼,但邏輯應該工作:

<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

此代碼將關閉任何多餘的行:

<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

謝謝你的男人!這個社區絕對是我遇到的最有幫助的! – user1169875

相關問題