0

テーブルの単純なクエリを実行し、テーブルをページに表示する Web ページを作成しようとしていますが、複雑なねじれが 1 つあり、混乱しています。以下は、コンマで区切られたテーブルの列名と 1 つのサンプル レコードです。

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

このテーブルの各行を印刷する必要がありますが、showers、eyewashPlumbed、または EyewashBottles のいずれかが 0 より大きい場合は、複数の行も印刷する必要があります。たとえば、この行を 3 回印刷します。シャワーが 0 の場合、2 回だけ出力します (eyewashPlumbed に 1 回、EyewashBottles に 1 回、シャワーに 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

いろいろなルールがあるなら

この問題を次のように処理します。

<?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 に答える
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 に答える