将每个第三个结果变成新的TR

时间:2012-01-02 23:37:29

标签: php mysql html while-loop

我会从这个问题中感到头痛。我有一个简单的查询和一个我在查询的while循环期间生成的简单表。我希望在每个第三个结果后创建一个新行。

$customers_num=8; // This is actually mysql_numrows($result) never mind; 

$i=0;
while ($i < $customers_num) {
    if($i % 3 === 0) {
        print '<tr>';
    }

    print '<td style="width: 30%;"></td>';

    if($i % 3 === 0) {
        print '</tr>';
    }

    $i++;
}

如果问题不明确,由于我的英语,我可以尝试更准确地改进问题。

问题是我打开它后立即关闭<tr>:我需要打开它,把三个TD放进去,然后关闭它......

3 个答案:

答案 0 :(得分:1)

首先,您忘了增加$i。这应该可以解决问题:

$customers_num=8; // This is actually mysql_numrows($result) never mind; 

$i=0;
while ($i < $customers_num) {

    if($i % 3 === 0) {
        if ($i > 0) print "</tr>"; //not first row
        if ($i < $customers_num - 1) print '<tr>'; //not last row
    }

    print '<td style="width: 30%;"></td>';

    $i++;
}

答案 1 :(得分:1)

这应该允许你打开tr并在其中打印三个td。

$customers_num=8; // This is actually mysql_numrows($result) never mind; 
$data; // an assumed variable containing your data.
for($i = 0; i < $customers_num; $i++){
    echo '<tr>';
    for($j = $i; $j < $i + 3 && $j < $customers_num; $j++){
            echo '<td style="width: 30%;">' . $data[$j] . '</td>';
    }
    echo '</tr>';
}

请不要使用您建议的奇数模数逻辑。只需要每个td的内循环。这使您可以在将来轻松更改逻辑。因此,如果需要,可能在未来,您可以轻松地将其分成5个单元格。

答案 2 :(得分:1)

我认为这就是你想要实现的目标:

$customers_num=8; // This is actually mysql_numrows($result) never mind; 

$i=1;
while ($i < $customers_num) {

    if($i == 1) {
        print '<tr>';
    }

    print '<td style="width: 30%;"></td>';

    if($i == 3 ) {
        print '</tr>';
        $i=0;//next inc. to 1
    }
    $i++;
}

if($i  != 1 )
{
  echo "</tr>";
}