0

我正在尝试创建一个网页,该网页对表格进行简单查询并将表格显示到页面,但有一个复杂的转折让我感到困惑。以下是表格中的列名和一个示例记录,以逗号分隔:

R_ID ,  B_ID ,  R_No ,  RoomName , showers , eyewashPlumbed , EyewashBottles  
1 , 609 ,   609 ,   Hazardous Waste Shed ,  1   ,   1    ,  1

我需要打印此表的每一行,但如果淋浴、洗眼液或洗眼瓶大于 0,我还需要打印多行。例如,我将打印此行 3 次。如果淋浴数为 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 中提取时,它会进入下一行。

4

2 回答 2

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的内容,因为该列未出现在您的数据库中。

于 2012-11-13T15:23:55.223 回答
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);
    }
}
?>
于 2012-11-13T15:37:03.970 回答