在动态创建的表格中使用Bootstrap交替行颜色

3

在Stack Overflow上我找到了交替行颜色。 虽然这似乎适用于静态表格,但我的结果是所有行都是粉色的。我无法在使用Bootstrap动态创建的PHP表格上使其工作:

$mdbFile = "\myAccessDatabase.mdb";
$pdo = new PDO("odbc:Driver={Microsoft Access Driver (*.mdb, *.accdb)};Dbq=$mdbFile", "", "");
$query = $pdo->prepare("SELECT * FROM Table");  
$query->execute();

echo "<table class='table table-striped table-bordered table-hover table-condensed table-responsive'>";                 
echo "<thead><tr>";
echo "<th>Last</th><th>First</th><th>XXX</th><th>YYY</th><th>ZZZ</th><th>WWW</th>";
echo "</tr></thead>";

for($i=0; $row = $query->fetch(); $i++){
    echo '<tbody><tr>';
    //echo "<th scope='row'>1</th>";
    echo "<td>".$row['LAST']."</td>";
    echo "<td>".$row['FIRST']."</td>";
    echo "<td>".$row['XXX']."</td>";
    echo "<td>".$row['YYY']."</td>";
    echo "<td>".$row['ZZZ']."</td>";
    echo "<td>".$row['WWW']."</td>";
}
echo "</tr></tbody></table>"; 

unset($pdo);
unset($query);

CSS:

.table-striped>tbody>tr:nth-child(odd)>td,
    .table-striped>tbody>tr:nth-child(odd)>th {
        background-color: pink;
    }

我希望更多人花时间去解决问题,而不是只关注问题的语法和格式。尽管我认为语法和格式很重要,但即使格式正确,未解决的问题仍然没有得到解决。 - BarclayVision
这个已经有了 table-striped 类,早在 Bootstrap 3 中就已经存在了。 - andreszs
2个回答

3
问题可能是您的开放标签在循环内部。因此,每一行都被视为第一行。请尝试将其移到外面:
 echo '<tbody>';
for($i=0; $row = $query->fetch(); $i++){
    echo '<tr>';
    //echo "<th scope='row'>1</th>";
    echo "<td>".$row['LAST']."</td>";
    echo "<td>".$row['FIRST']."</td>";
    echo "<td>".$row['XXX']."</td>";
    echo "<td>".$row['YYY']."</td>";
    echo "<td>".$row['ZZZ']."</td>";
    echo "<td>".$row['WWW']."</td>";
    echo '</tr>';
  }
    echo "</tbody></table>"; 

谢谢,解决了问题 - 没想到 <tbody> 会重复。 - BarclayVision
不要忘记你的 tr 标签。开放和关闭标签应该在循环内或循环外。我猜你想把它放在里面,所以把你的关闭标签移到循环内部。 - Armin

0
尝试这个:.table-striped>tbody>tr:nth-of-type(odd) { background-color: pink; }。这与编程有关。

返回一个代码,可以使所有行的颜色相同。 - BarclayVision

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