【问题标题】:PHP IF-statement to change color of table rows <td>?PHP IF 语句改变表格行的颜色 <td>?
【发布时间】:2011-11-23 21:38:19
【问题描述】:

我在下面写了以下代码。使用此代码,我想从 MySQL 数据库中获取数据并在表行中打印(回显)结果,每行具有不同的颜色。使用此代码可以成功从数据库中获取数据,但是我更改行颜色的条件不起作用。请检查我的代码,让我知道我错在哪里。

<table width="500" align="center" style="border:1px solid;">    
    <?php 
        $query = "SELECT * FROM main_cat";
        $result = mysql_query($query);
        $count = mysql_num_rows($result);
        while($end = mysql_fetch_array($result)){
            echo "<tr>";
                if($count % 2 == 0){
                    echo '<td bgcolor="#CCCCCC">'.$end['page_name'].'</td>';
                }else{
                    echo '<td bgcolor="#99CC66">'.$end['page_name'].'</td>';
                }
            echo "</tr>";
            }
    ?>
</table>

【问题讨论】:

  • 投反对票的人,请告诉 OP 他们需要纠正什么以避免这样的投反对票。
  • 我在问对您的问题投反对票的人解释他们的投反对票。

标签: php mysql if-statement while-loop html-table


【解决方案1】:

您没有将 $count 初始化为 0,也没有在任何地方递增 $count

【讨论】:

    【解决方案2】:

    这应该可行:

    <table width="500" align="center" style="border:1px solid;">    
        <?php 
            $query = "SELECT * FROM main_cat";
            $result = mysql_query($query);
            $i = 0;
            while($end = mysql_fetch_array($result)){
                echo "<tr>";
                    if($i % 2 == 0){
                        echo '<td bgcolor="#CCCCCC">'.$end['page_name'].'</td>';
                    }else{
                        echo '<td bgcolor="#99CC66">'.$end['page_name'].'</td>';
                    }
                echo "</tr>";
                $i++;
                }
        ?>
    </table>
    

    最好使用 CSS,即奇数和偶数选择器:http://www.w3.org/Style/Examples/007/evenodd

    【讨论】:

      【解决方案3】:

      您需要在 while 循环中放入一个计数,而不是查询返回的总数。

      不会为你写代码。

      在while循环之前将计数器设置为零。

      在while循环中检查计数器的条件 然后将计数器值增加 1

      【讨论】:

      • 如果您对我的回答投反对票,请留下一些反馈意见
      【解决方案4】:

      如果你愿意,你可以缩短这段代码,并且从 PHP 代码中得到 HTML。这也将允许 Notepad++ 或 NetBeans 等编辑器突出显示 HTML 代码。此外,您只获得了该行 HTML 一次,因此更易于维护。

      然而,使用 css 来设置交替行的样式是最聪明的,或者至少使用一个类来设置各个行的样式。

      我在我的代码中使用了内联样式,它本来就很脏。但是bgcolor。真的吗?在 HTML 4.1 strict 中甚至不再支持它。它很旧,很恶心。

      <table width="500" align="center" style="border:1px solid;">    
          <?php 
              $query = "SELECT * FROM main_cat";
              $result = mysql_query($query);
              $i = 0;
              while($end = mysql_fetch_array($result)){
                  $color = ($i++ % 2 == 0 ? '#CCCCCC' : '#99CC66');
                  $page = $end['page_name'];
      ?>
        <tr><td style="background-color: <?=$color?>"><?=$page?></td></tr>
      <?php
              }
      ?>
      </table>
      

      功劳归于杰伦。这是我基于此示例的代码。

      【讨论】:

        【解决方案5】:

        我认为您应该制作一个不同颜色的数组,然后使用更改索引更改每行的颜色。像这样

        <table width="500" align="center" style="border:1px solid;">    
        <?php 
            $query = "SELECT * FROM main_cat";
            $result = mysql_query($query);
            $clr=0;
            $colors = array('blue','green','purple','orange','red');
            while($end = mysql_fetch_array($result)){
                echo '<tr style="font-size:18px;background-color:'.$colors[$clr].'">';
                        echo '<td bgcolor="#CCCCCC">'.$end['page_name'].'</td>';
                        echo '<td bgcolor="#99CC66">'.$end['page_name'].'</td>';
                echo "</tr>";
              $clr++;
              if($clr==5)
                  $clr=0;
                }
        ?>
        

        【讨论】:

          猜你喜欢
          • 2015-12-07
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多