0

私はすでに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

4 に答える 4

4

CSSセレクターを使用し:nth-of-type( )ます。

:nth-of-type(even)とブラウザの両方に異なるスタイルを:nth-of-type(odd)設定することで、交互にスタイルを設定できるため、心配する必要はありません。

これについては、 W3Schoolsのエントリを参照してください。

于 2012-09-07T12:28:03.110 に答える
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クラスを割り当てることもできます。

于 2012-09-07T12:40:19.483 に答える
1

これを試して:

<tr <?php if($i%2){?>bgcolor="#eeeeee"<?php } else{ ?>bgcolor="red" <?php } $i++; ?>>
于 2012-09-07T12:34:17.027 に答える
0

CSS を使用した優れた回答を提供してくれた Bas van den Heuvel に感謝します。私のように余分な行間が発生し、それを削除したい場合は、次のコード例を使用してください。これにより、交互の色の線がより緊密になります。(私はライトグレーと白を使いました)

p:nth-of-type(odd)
{
background:#e2e2e2;
margin: 0px;
padding: 0px;
}
p:nth-of-type(even)
{
background:#ffffff;
margin: 0px;
padding: 0px;
}
于 2014-04-03T13:46:03.277 に答える