我正在尝试创建一个简单查询表格并将表格显示到页面的网页,但是有一个复杂的转折让我感到困惑。以下是用逗号分隔的表中的列名和一个示例记录:
R_ID , B_ID , R_No , RoomName , showers , eyewashPlumbed , EyewashBottles
1 , 609 , 609 , Hazardous Waste Shed , 1 , 1 , 1
我需要打印此表的每一行,但如果showers,eyewashPlumbed或EyewashBottles大于0,还要打印多行。例如,我将打印此行三次。如果淋浴为0,我只打印两次(一次用于eyewashPlumbed,一次用于EyewashBottles,0用于淋浴)。如果淋浴是2,我会打印4次,等等。
我用来打印的代码如下:
<?php while ($row = mysql_fetch_array($result, MYSQL_ASSOC)): ?>
<tr>
<td><?php print $row["B_ID"];?></td>
<td><?php print $row["R_No"];?></td>
<td><?php print $row["RoomName"];?></td>
<td><?php print $row["Showers"];?></td>
<td><?php print $row["eyewashPlumbed"];?></td>
<td><?php print $row["EyewashBottles"];?></td>
</tr>
<?php endwhile; ?>
问题是我不知道如何中断while循环以便多次打印同一行。当它从mysql_fetch_array中拉出时,它会进入下一行。
答案 0 :(得分:0)
你真的应该切换到PDO / mysqli,但是对于你当前的代码,它会像(在你的例子中为showers
):
<?php
while ($row = mysql_fetch_array($result, MYSQL_ASSOC)):
$count = 2 + $row["showers"];
for ($i = 0; $i < $count)
{
?>
<tr>
<td><?php print $row["Date"];?></td>
<td><?php print $row["Inspector1"];?></td>
<td><?php print $row["Inspector2"];?></td>
<td><?php print $row["Building_Name"];?></td>
<td><?php print $row["Room"];?></td>
<td><?php print ($i + 1);?></td>
</tr>
<?php
}
endwhile;
?>
您可能希望将$row["shower_no"]
更改为$i + 1
,因为该列未显示在您的数据库中。
答案 1 :(得分:0)
如果您有各种规则
我会像这样处理这个问题:
<?php
function printRow($row=array(), $times=1) {
for($i=0; $i<$times; $i++) {
echo "
<tr>
<td>{$row["Date"]}</td>
<td>{$row["Inspector1"]}</td>
<td>{$row["Inspector2"]}</td>
<td>{$row["Building_Name"]}</td>
<td>{$row["Room"]}</td>
<td>{$row["shower_no"]}</td>
</tr>
";
}
}
while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
switch(true) {
case ($row['eyewashPlumbed']>0 or $row['EyewashBottles']>0):
printRow($row, 3); // print 3 times
break;
case ($row['showers']==0): // print 2 times
printRow($row, 2);
break;
default: // default print 1 time only
printRow($row, 1);
}
}
?>