2012-01-25 3 views
7

私はPHPでフォーラムを作成しています。私はすべてのフォーラムカテゴリをテーブルに表示しなければなりません。そうするために、whileループを使用しました。しかし、私はすべてのテーブル行に3つのtdだけを持っていたい。カテゴリをループするには、クエリでwhileループを使用していますので、ここではモジュラスを使用することはできません。3回目のループごとにtrを挿入します。

+0

は私達にあなたのコードあなたが使用することができ –

+0

を表示しますループの前にインクリメント変数 '$ i = 0'を作成し、whileループの各繰り返しで' ++ $ i'をインクリメントすることによって、モジュラス演算子 '%'を呼び出します。 – rdlowrey

答えて

13

モジュラスを使用できないのはなぜですか?ちょうどどこかにカウンタを追加し、それが% 3 == 0にリセットされたら、あなたのものをやってください。

最初と最後のようなものを追加する必要があるかもしれませんが、しばらくの間はモジュロを使用しない理由はありません。

$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

関連する問題