2011-11-01 78 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