2011-05-24 180 views
2

嘿傢伙, 一直在處理幾行代碼,但我似乎無法讓它工作。基本上我想通過一個while循環來改變偶數和奇數表格樣式。我究竟做錯了什麼? 似乎每次只通過if()循環。在PHP中的while循環之間交替顯示偶數和奇數

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

    ?> 
+2

1)不要在你不需要的時候重複代碼塊。 'echo'「'會工作得很好。 2)如果您啓用了屏幕上的錯誤,您會立即注意到缺少'$'的問題。 – Matthew 2011-05-24 15:12:14

回答

14

您的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>"; 
+0

thanx!將採取你的方式做到這一點! – Ismailp 2011-05-24 15:14:22

+2

你甚至可以用這個進一步改進:'$ class =($ i%2 == 0)? 'even':'odd';' – Jeroen 2011-05-24 19:48:31

0

你忘了一個「$」

if(i%2 == 0) 

應該

if(($i % 2) == 0) 
+0

哈哈哈!該死的我剛纔看到那個時候我寫代碼......現在最好去睡覺!謝謝你們! – Ismailp 2011-05-24 15:11:59

0

替換該行...

if(i%2 == 0) 

...有以下幾點:

if($i % 2 == 0) 
+0

Thanx!這是當我遲到時會發生什麼......下次更好地去睡覺:) – Ismailp 2011-05-24 15:12:53

1

您還可以使用CSS雜項文件,子屬性

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

As per W3 example

+0

這對所有瀏覽器都有效嗎? – Ismailp 2011-05-24 15:28:32

+0

它應該如果它不是那麼它缺乏瀏覽器不支持W3規格 – 2011-05-24 16:25:15

0

這可以進一步改善。

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

CSS-Tricks發佈了一個非常非常優雅的解決方案來解決這個問題。 它看起來像超級還原C++魔術。基本上他們這樣做:

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

這適用於任何循環:for,foreach和while。 修改整數可使您獲得更大的步長,例如3之後的重置,4之後的重置等等。

CSS-Tricks final solution