PHP IF-оператор для изменения цвета строк таблицы <td>? - PullRequest
0 голосов
/ 23 сентября 2011

У меня есть следующий код, написанный ниже. С помощью этого кода я хочу получить данные из базы данных 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>

Ответы [ 5 ]

3 голосов
/ 23 сентября 2011

Вы не инициализируете $count в 0 и не увеличиваете $count в любом месте.

2 голосов
/ 23 сентября 2011

Это должно работать:

<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

1 голос
/ 23 сентября 2011

Если хотите, вы можете сократить этот код, и получить HTML-код из кода PHP.Это позволит таким редакторам, как Notepad ++ или NetBeans, выделить HTML-код.Кроме того, вы получили эту строку HTML только один раз, поэтому ее будет проще поддерживать.

Однако наиболее разумно использовать css для стиля чередующихся строк или, по крайней мере, использовать класс для стиля отдельных строк,

Я использовал встроенный стиль в своем коде, который грязный как есть.Но bgcolor.В самом деле?Это даже больше не поддерживается в строгом HTML 4.1.Он старый, это непристойно.

<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>

Кредит достается Йеруну.Именно на его коде я основал этот пример.

1 голос
/ 23 сентября 2011

Вам нужно поместить в цикл while количество, а не общее число, возвращаемое запросом.

Не собираюсь писать код для вас.

Перед циклом while установить счетчик на ноль.

В то время как цикл проверки состояния счетчика Затем увеличьте значение счетчика на 1

0 голосов
/ 12 сентября 2014

Я думаю, вы должны создать массив разных цветов, а затем изменить цвет каждой строки с помощью индекса изменения.как это

<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;
        }
?>

...