PHP while循环,表格行

3
我将尝试遍历数据库并将数据输出到一个 div 中,如果在水平方向上有三个 div,则会开始一个新的 tr,直到达到另外三个。当前的输出方式如下:
[] [] []
[]
[] []

目前当它达到3时,它可以开始新的一行,但我不知道如何只回显一个新的tr?因为每次它都会创建一个新的表格行。

echo '<table><tr>';  

while ($result) 
{
    $i ++;
    if ($i&3)
    {
      echo '<td>
         <div>Row Data</div>
       </td>'; 
    }

    else
    {       
      echo '<tr>
        <td>
          <div>Row Data</div>
        </td></tr>';
   }
}  
echo '</tr></table>';
$result变量是来自我的SQL查询的记录集,一切都很顺利,我只是不知道如何仅创建一个新的表行?

你在哪里关闭第一个打开的tr?就在表格声明附近的那一个。 - vladv
抱歉,我漏掉了一部分代码,现在已经添加了。 - Elliott
5个回答

2

当你到达3时,需要将$i变量重置为1...

$i = 0;
echo '<table><tr>';  

while ($result) 
{

    if ($i<=2)
    {
      echo '<td>
         <div>Row Data</div>
       </td>'; 
    }

    else
    {       
      echo '</tr><tr>';
      echo '<td><div>Row Data</div></td>'; 
      $i = 0;
   }
    $i ++;

}  
echo '</tr></table>';

或者像这样...


2
echo '<table><tr>';
$i = 0;
while ($result) {
   if ($i > 2) {
      echo '</tr><tr>';
      $i = 0;
   }
   echo '<td></td>';
   $i++;
}
echo '</tr></table>';

1

我认为你的代码中有一个逻辑上的小错误。当添加了3个<td>时,你想要换行。但是目前你在任何情况下都会添加<td>。你的计数不再起作用。

此外,我认为按位运算不是你想要的。如果你想一直保持3个td,&3将无法实现此目的。例如,3$3为true,但6&3不为true。7&3为true。11&3为true。然后15&3为true。你可以重新设置$i或者使用%运算符。


0
else
{       
  echo '<tr>
    <td>
      <div>Row Data</div>
    </td></tr>';
}

应该阅读:

else
{       
  echo '</tr><tr>
    <td>
      <div>Row Data</div>
    </td>';
}

0

或者使用模运算:


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

这样你就不必重置 $i 了。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接