2013-09-25 50 views
0

這似乎是一個非常基本的任務;我不確定是否有腦痙攣,或者我遇到了更罕見的事情。但似乎並非如此。使用PHP將多個HTML字段更新到MySQL數據庫中

我有一個表稱爲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問題,似乎我需要使用foreach來遍歷每個字段。它是否正確?另外,查詢是否也在循環中?

+0

爲什麼你想遍歷所有的領域?如果它們在同一個表中,則可以對所有字段進行一次更新。 –

+0

我認爲我正在努力的最大的事情是識別標記。在「name =」「'字段中輸入什麼內容。它應該是唯一的,但ID似乎並不適合。所以在'POST'中,我必須手動拼出每個字段,並且由於我正在循環字段以在'HTML'中創建它們,似乎我需要在'php'結尾執行相同的操作。 – KickingLettuce

回答

2
foreach($_POST as $key => $value) { 
    if(is_numeric($key)) 
    { 
     $query = "UPDATE retail_pricing SET pricing = $value WHERE id = $key "; 
     mysqli_query($connection, $query); 
    } 
} 
+1

這一個爲我工作,所以我選擇。 – KickingLettuce

+0

它很可能會工作,但它也會接受任何數字字段名稱,即使它不是數據庫中的有效ID,這可能會導致失敗。 –

+0

@Sébastien好的,謝謝,很高興知道。這是一個非常簡單的項目,所以我會堅持下去,因爲它沒有損壞,但是今後我會傾向於使用你的;所以我也贊成。 – KickingLettuce

2

添加在你的HTML隱藏輸入將要收集所有ID:

<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); 
} 
+2

我喜歡這種方法,因爲它會阻止與查詢的任何問題,如果你在未來進一步增加表單字段。 – Springie

相關問題