0

これは非常に基本的なタスクのように思えます。脳のけいれんを起こしているのか、それとももう少しまれな何かに遭遇したのかはわかりません. しかし、そうではないようです。

productsこれらの列を持つ テーブルがあります。ID, Model, Cost, Quantity

私の HTML フォームは、モデルごとにすべての価格と数量割引を出力します。私はこのようにループスルーします:

 <form method="post">

 <table>
       <tr>
            <th>Quantity</th>
            <th>Pricing</th>
       </tr>

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

       <tr>
           <td><?php echo $row['model']; ?></td>
           <td><input type="text" name="<?php echo $row['id']; ?>" value="<?php echo $row['cost']; ?>" /></td>

      </tr>

     <?php } ?>

 </table>


  <input type="submit" name="retail_price" value="Update Pricing"  />

 </form>

そのため、すべての価格がテキスト フィールドに出力され、価格を「一括」更新できるようにボタンが表示されます。

私の質問は、PHP私が立ち往生している場所に関するものです:

if (isset($_POST['retail_price'])) {  // THIS CODE IS NOT COMPLETE!

    $query = "
        UPDATE retail_pricing
        SET pricing = {$new price}
                    WHERE id = {$id} ";
    mysqli_query($connection, $query);

}

私が遭遇した問題は、各フィールドを調べて、それぞれを更新したいです。他の Stack の質問をすばやく検索すると、a を使用しforeachて各フィールドを反復処理する必要があるようです。これは正しいです?また、クエリもループに含まれますか?

4

2 に答える 2

2

すべての ID を収集する非表示の入力を HTML に追加します。

<tr>
    <td><?php echo $row['model']; ?></td>
    <td>
    <input type="text" name="<?php echo $row['id']; ?>" value="<?php echo $row['cost']; ?>" />
    <input type="hidden" name="ids[]" value="<?php echo $row['id']; ?>" />
    </td>
</tr>

次に、フォームを送信すると、これらすべての ID をループして DB を更新できます。

foreach( $_POST['ids'] as $id )
{
    $price = $_POST[$id];
     $query = "
        UPDATE retail_pricing
        SET pricing = {$price}
                    WHERE id = {$id} ";
    mysqli_query($connection, $query);
}
于 2013-09-25T16:09:19.840 に答える