在PHP和MySql中多次打印记录
我正在尝试创建一个网页,对一个表进行简单的查询,并将该表显示到一个页面上,但有一个复杂的扭曲让我感到困惑。以下是表格中的列名和一条示例记录,以逗号分隔:在PHP和MySql中多次打印记录,php,javascript,html,mysql,Php,Javascript,Html,Mysql,我正在尝试创建一个网页,对一个表进行简单的查询,并将该表显示到一个页面上,但有一个复杂的扭曲让我感到困惑。以下是表格中的列名和一条示例记录,以逗号分隔: R_ID , B_ID , R_No , RoomName , showers , eyewashPlumbed , EyewashBottles 1 , 609 , 609 , Hazardous Waste Shed , 1 , 1 , 1 我需要打印此表的每一行,但如果淋浴、洗眼器垂直或洗眼瓶大于0,
R_ID , B_ID , R_No , RoomName , showers , eyewashPlumbed , EyewashBottles
1 , 609 , 609 , Hazardous Waste Shed , 1 , 1 , 1
我需要打印此表的每一行,但如果淋浴、洗眼器垂直或洗眼瓶大于0,还需要打印多行。例如,我将打印这一行三次。如果淋浴是0,我只会打印两次(一次用于洗眼器,一次用于洗眼瓶,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_数组提取时,它会进入下一行。您确实应该切换到PDO/mysqli,但是对于您当前的代码,它会是这样的(对于您的示例中的
淋浴
):
您可能希望将
$row[“shower\u no”]
更改为类似$i+1的内容,因为该列不会出现在您的数据库中。如果您有多种规则
我会这样处理这个问题:
<?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);
}
}
?>
您根本没有提到这个问题。我们不是一家出租编码服务公司。您列出了需求,但没有提到您的问题所在。如果你不能自己写这封信,那么很抱歉。。这不是我们来这里的目的。我试着把这个问题贴出来,结果做得很糟糕。让我编辑它,然后再试一次。这是我的第一篇帖子,我仍在尝试了解网站的布局。我接受了你的答案,因为它帮助我得出了我需要的结论,尽管我没有使用你发布的确切代码。这主要是因为我的问题措辞怪异。
<?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);
}
}
?>