将PHP备用表行颜色添加到现有HTML表

时间:2012-09-07 12:21:46

标签: php html-table

我已经用PHP编写了一个表,它回显了数据库中调用的数据,如下所示:

<TABLE cellSpacing=1 cellPadding=2 align=center bgColor=#aaaaaa border=0 width="100%" class="logintbl">
             <TR>
              <TD bgColor=whitesmoke colSpan=0><B>Pages</B></td>
            </tr>
            <tr>
                <td>
                    <table align="center" cellSpacing=0 cellPadding=2 border="0" width="100%">
                        <tr>
                            <td align="center" valign="bottom">&nbsp;<font color="#4d71a1"><b>Page Name</b></font>&nbsp;</td>
                        </tr>
                        <?php while ($row = mssql_fetch_array($result)) { ?>
                        <tr bgcolor="#eeeeee">

                            <td align="center"><?php echo $row["PageURL"]; ?></td>
                            <td align="center">
                            <a href="PageUpdate.php?id=<?php echo $row["PageID"]; ?>"><img src="images/0013-pen.gif" width="16" height="16" alt="" border="0"></a>&nbsp;&nbsp;&nbsp;
                            </td>

                        </tr>
                <?php } ?>
                        <tr><td colspan="7">&nbsp;</td></tr>
                        <tr>
                            <td colspan="7" align="center">
                            </td>
                        </tr>

                    </table>
                </td>
            </tr>
        </table>

我一直试图使用PHP片段替换行的颜色,经过一些研究实现了这个:

<tr bgcolor="<?php echo ($clrCounter++ % 2 == 0 ? '#000000' : '#ffffff'); ?>">

它似乎没有正常工作,所以我觉得我在某个地方出错了,我知道有更长的方法来实现我可以实现的。我只是希望有一些简单的事情。我是否在努力尝试以这种方式实施它?

我将其整合如下:

 <TABLE cellSpacing=1 cellPadding=2 align=center bgColor=#aaaaaa border=0 width="100%" class="logintbl">
            <TR>
              <td bgColor=whitesmoke colSpan=0><B>Pages</B></td>
            </tr>
            <tr>
                <td>
                    <table align="center" cellSpacing=0 cellPadding=2 border="0" width="100%">
                        <tr bgcolor="#3A7525">
                            <td align="center" valign="bottom">&nbsp;<font color="#4d71a1"><b>Page Name</b></font>&nbsp;</td>
                        </tr>
                        <?php while ($row = mssql_fetch_array($result)) { ?>

                        <tr bgcolor="<?php echo ($clrCounter++ % 2 == 0 ? '#C2C2C2' : '#ffffff'); ?>">

                            <td align="center"><?php echo $row["PageURL"]; ?></td>
                            <td align="center">
                            <a href="PageUpdate.php?id=<?php echo $row["PageID"]; ?>"><img src="images/0013-pen.gif" width="16" height="16" alt="" border="0"></a>&nbsp;&nbsp;&nbsp;
                            </td>

                        </tr>
                <?php } ?>
                        <tr>
                            <td colspan="7" align="center">
                            </td>
                        </tr>

                    </table>
                </td>
            </tr>
        </table>

这有点奏效,但出于某种原因,第一个条目是蓝色的吗?当我指定白色和灰色时。

4 个答案:

答案 0 :(得分:4)

使用CSS选择器:nth-of-type( )

通过为:nth-of-type(even):nth-of-type(odd)设置不同的样式,浏览器会为您执行交替样式,因此您不必担心它。

请参阅此处的W3Schools条目。

答案 1 :(得分:4)

循环读取db:

返回的结果时,可以使用以下命令
<?php

// Define row colors
$color1 = "#FFFFFF";
$color2 = "#F4F9FF";

// Set row counter
$row_count = 0;

while ($row = mssql_fetch_array($result)) {
    $row_color = ($row_count % 2) ? $color1 : $color2;
?>
    <tr bgcolor="<?php echo $row_color; ?>">
        <td align="center"><?php echo $row["PageURL"]; ?></td>
        <td align="center">
            <a href="PageUpdate.php?id=<?php echo $row["PageID"]; ?>"><img src="images/0013-pen.gif" width="16" height="16" alt="" border="0"></a>&nbsp;&nbsp;&nbsp;
        </td>
    </tr>
<?php

    $row_count++;

}

?>

或者,您可以替换bgcolor标记并为每一行分配一个CSS类。

答案 2 :(得分:1)

试试这个:

<tr <?php if($i%2){?>bgcolor="#eeeeee"<?php } else{ ?>bgcolor="red" <?php } $i++; ?>>

答案 3 :(得分:0)

感谢Bas van den Heuvel使用CSS获得了很好的答案。如果您遇到了额外的行间距,并且想要将其删除,请使用以下示例代码。这将使交替的彩色线条更紧密。 (我使用浅灰色和白色)

p:nth-of-type(odd)
{
background:#e2e2e2;
margin: 0px;
padding: 0px;
}
p:nth-of-type(even)
{
background:#ffffff;
margin: 0px;
padding: 0px;
}