2011-11-01 141 views
3

我對我來說有一個令人困惑的情況。 以下代碼在網頁上生成一個空白行。我在不同的頁面上使用相同的代碼,他們工作正常。行數設置爲顯示5行,但顯示6,第一行沒有任何動態數據。 我敢肯定,我錯過了或忽略了一些事情,任何人都可以闡明爲什麼會發生這種情況? 乾杯PHP雖然循環將空白行添加到重複區域

<?php 
$counter = 0; 
do { 
$color = ($counter & 1)? "#FFF" : "#DEDEDE"; 
$counter++ 
?> 
     <tr style="background: <?php print $color; ?>"> 
     <td ><a href="edit_workorder.php?jobID=<?php echo $row['jobID']; ?>" ><?php echo $row['wo_date']; ?></a></td> 
     <td /> 
     <td ><?php echo $row['wcust_firstname']; ?> <?php echo $row['wcust_surname']; ?></td> 
     <td ><?php echo $row['wcust_address']; ?> - <?php echo $row['wcust_suburb']; ?></td> 
     <td ><?php echo $row['wo_equip']; ?></td> 
     <td /> 
     <td ><?php echo $row['wo_problem']; ?></td> 
     <td /> 
     <td ><?php echo $row['wtech_userlogin']; ?></td> 
     </tr> 
     <?php 
} while($row = mysql_fetch_array($sql2)) 
// close while loop 
?> 
+3

只要稍稍改變一下。 – deviousdodo

+0

所以在標題行之前有一行? th標籤? – bozdoz

+0

是的,標題在一個單獨的行中。我使用的代碼在網站中的其他頁面上正常工作。我無法弄清楚問題出在哪裏。我將工作頁面的代碼與這個代碼進行了比較,並且沒有區別 – Spud

回答

4

$行未填充,直到你去通過循環的第二次。

代替

do{ 
... 
}while($row = mysql_fetch_array($sql2)) 

做:

while($row = mysql_fetch_array($sql2)){ 
... 
} 
+0

這樣做沒問題!我仍然感到困惑,爲什麼相同的代碼在其他頁面上「工作」,但我會把它記錄下來,因爲我對PHP缺乏知識和經驗。感謝您的幫助。好,你好,乾杯。 – Spud

+0

根據循環的作用,輸出可以與任一循環相同。 – Jaime

1

的問題是,與do-while的while-子句中的表達沒有在第一次運行中執行。其結果是$row數組未設置,因此不包含任何要打印的值。

的代碼應該進行修改,以這樣的:

while($row = mysql_fetch_array($sql2)){ 

} 

下面是一個例子來說明這樣做,而如何工作的:

$i = 0; 
do { 
    echo $i; 
}while($i++ < 3); 

輸出:

0 
1 
2 
3 

而標準while循環會輸出:

1 
2 
3 
+0

謝謝,更正已經完成。我對這一切都非常陌生,並對通過使用它可以達到的目標感到着迷,但是由於缺乏關於此主題的知識和培訓,我似乎陷入了困境。謝謝您的幫助。 – Spud