1

こんにちはみんな、私はwhileループをやろうとしています。

whileループは、すべての注文をループします。動作しますが、どういうわけか、注文ステータスをループしません。たとえば、注文4のステータスは保留中ですが、注文5のステータスには何も表示されません。ブラケットを間違って配置したのではないかと思います。

これは私のコードです。

<form action="results-action" method="post" enctype="multipart/form-data">
<fieldset>

<table width="600" border="1">
<tr><td><h2>Pending Order</h2></td></tr>
<tr>

<th scope="col">Order ID</th>
<th scope="col">Name</th>
<th scope="col">Address</th>
<th scope="col">Product Name</th>
<th scope="col">Produt Quantity</th>
<th scope="col">Price</th>
<th scope="col">Order status</th>
</tr>

<?php
while ($row = mysqli_fetch_array($result)) {
?>

<tr>
<td><input type="text" value='<?=$row['virtuemart_order_id']?>' name="orderid" id="virtuemart_order_id"></td>
<td><?=$row['first_name']?></td>
<td><?=$row['address_1']?></td>
<td><?=$row['order_item_name']?></td>
<td><?=$row['product_quantity']?></td>
<td><?=$row['product_final_price'] ?></td>
<td><select name="change">
    <?php 
    while ($row2 = mysqli_fetch_array($result2)) {
    ?>
    <option value="<?=$row2['order_status_code'] ?>"><?=$row2['order_status_name'] ?></option>
    <?php
    } //end inner while
    ?>
</td>
</tr>

<?php
} //end outer while
?>

</table>
</fieldset>

<fieldset>
<table>
<tr>
<td><input type="submit" value="Update status" name="update status"> </td>
</tr>
</table>
</fieldset>
</form>
4

2 に答える 2

0

また、名前が一意であることを確認してください<select>。そうしないと、すべてのステータスが間違って取得されます。

<select name="change_<?=$row['row_id']?>">

そんな感じ。

于 2013-12-16T08:55:15.750 に答える
0

内部で毎回同じ行を取得したい場合whileは、mysqli 結果セットの内部ポインターをリセットする必要があります。これには、mysqli_data_seek()

次のような結果になります。

while ($row = mysqli_fetch_array($result)) {
    // snip ...
    while ($row2 = mysqli_fetch_array($result2)) {
        // snip
    }
    mysqli_data_seek($result2, 0);
    // snip
}
于 2012-11-11T11:44:48.667 に答える