2010-09-12 64 views
0

我正在使用表来迭代表中数据库中的数据。我的HTML代码如何从数据库迭代中动态更改html元素

<table id="tablesorter"> 
     <thead> 
      <tr> 
      <th>Name</th> 
      <th>Location</th> 
      <th>Email</th> 
      <th>Phone</th> 
      </tr> 
     </thead> 
     <tbody> 
      <tr> 
      <td>Your Name</td> 
      <td>Somewhere</td> 
      <td>[email protected]</td> 
      <td>9999999999</td> 
      </tr> 
     <tr class="trow"> 
      <td>Your Name</td> 
      <td>Somewhere</td> 
      <td>[email protected]</td> 
      <td>9999999999</td> 
      </tr> 
      </tbody> 
    </table> 

在我的HTML表我使用的是类的表行的风格它每秒钟表行。现在从数据库中提取数据时,我想确保它执行相同的操作。它应该为每个第二个表格行添加类别trow。

与while循环一起使用的逻辑是什么?

回答

1

在我看来,你可以只使用一个三元语句来设置和取消类变量,因为它遍历打印每行:

$class = ($class=='trow')?'':'trow'; 
<tr class="<?= $class ?>"> 
<td>Your Name</td> 
<td>Somewhere</td> 
<td>[email protected]</td> 
<td>9999999999</td> 
</tr> 

所以每次一个行打印的$class变量将在trow之间切换而没有任何内容。

我创建导出到Excel经常

+0

哇这么简单,容易理解的逻辑列表时使用这个逻辑,这是辉煌的答案,只是那种解决方案,我一直在寻找。非常感谢你。 :) – 2010-09-12 16:56:05

+0

没问题,易卜拉欣。三元已成为最近的好友 – d2burke 2010-09-12 17:33:32

1

你会使用一个简单的状态机:

$evens = FALSE; 
while($row = fetch_from_db()) { 
    $evens = !$evens; // invert the even/odd flag 
    $rowtype = ($evens === TRUE) ? ' class="trow"' : ''; 
    echo <<<EOL 
<tr{$rowtype}> 
    <td>etc... 
</tr> 

EOL; 
} 

由于$evens开出假的,第一排它反转为真,这台$rowtype为“特罗”。在第二行,它被倒转回假,$rowtype变空。在第三排,我们又回到了真/假,等等,来回地乒乓球。

2

基本上,这是你想要做什么:

  1. 使用计数器变量来跟踪你的行为
  2. 在每行,检查行计数器是偶数。最简单的方法是使用模运算符%

    6 % 2 == 0 // true 
    5 % 2 == 1 // true 
    4 % 2 == 1 // false