Чередование четного и нечетного цикла в PHP - PullRequest
3 голосов
/ 24 мая 2011

Эй, ребята, Я работал над несколькими строками кода, но я не могу заставить его работать. По сути, я хочу чередовать четные и нечетные стили таблиц с помощью цикла while. Что я делаю неправильно? Кажется, что он проходит только через if () каждый раз.

Thanx!

<?php
    include 'connect.php';
    echo "<table id='hor-zebra'>";
    $i = 0;
    while($row = mysql_fetch_array($result))
    {
       if(i%2 == 0)
       {
          echo "<tr class='even'>";
          echo "<td>" . $row['departure'] ." ✈ ". $row['destination'] . "</td>";
          echo "</tr>";
       }

       else
       {
          echo "<tr>";
          echo "<td>" . $row['departure'] ." ✈ ". $row['destination'] . "</td>";
          echo "</tr>";
       }
       $i++;
    }
    echo "</table>";

    mysql_close($con);

  ?>

Ответы [ 6 ]

17 голосов
/ 24 мая 2011

У вас есть опечатка в вашем if состоянии. Должно быть:

   if($i%2 == 0)

Вы также можете сохранить несколько нажатий клавиш, просто назначив имя класса переменной в блоках if и else:

   if($i%2 == 0)
   {
      $class = 'even';
   }
   else
   {
      $class = 'odd';
   }

   echo "<tr class='$class'>";
   echo "<td>" . $row['departure'] ." ✈ ". $row['destination'] . "</td>";
   echo "</tr>";
1 голос
/ 24 мая 2011

вы также можете использовать свойство css .nth-child

   tr:nth-child(even) {background: #CCC}
tr:nth-child(odd) {background: #FFF}

Согласно примеру W3

0 голосов
/ 21 сентября 2015

CSS-Tricks опубликовал очень и очень элегантное решение этой проблемы.Похоже, супер редукционистская магия C ++.По сути, они делают это:

<div class="example-class<?php echo ($xyz++%2); ?>">

Это работает в любом цикле: for, foreach и while.Изменение целого числа дает вам больший размер шага, то есть сброс после 3, сброс после 4 и т. Д.

Окончательное решение CSS-Tricks

0 голосов
/ 18 апреля 2014

Это может быть улучшено в дальнейшем.

foreach($post_array as $array => $row) {
    $class = ($array %2 == 0) ? 'even' : 'odd';
    echo '
    <tr class="'.$class.'">
        <td>' .$row['title']. '</td>
        <td>' .$row['content']. '</td>
        <td>' .$row['catid']. '</td>
        <td>' .$row['id']. '</td>
        <td>' . '<form action="edit.php?id='.$row['id'].'" method="post">
            <input type="hidden" name="id" id="id" value="'.$row['id'].'" />
            <input type="submit" name="edit" value="Edit" />
        </form>' . '</td>
        <td>' . '<form action="" method="post">
            <input type="hidden" name="id" id="id" value="'.$row['id'].'" />
            <input type="submit" name="delete" value="Delete" />
        </form>' . '</td>
    </tr>';
}
0 голосов
/ 24 мая 2011

Заменить эту строку ...

if(i%2 == 0)

... со следующим:

if($i % 2 == 0)
0 голосов
/ 24 мая 2011

Вы забыли '$'

 if(i%2 == 0)

Должно быть

 if(($i % 2) == 0)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...