2011-04-11 55 views
2

我有一個窗體,顯示從數據庫中拉出的數據。有幾列正在爲表單拉取。形式的基本結構是這樣的:PHP的MySQL - 一次更新多行

<form> 
    <input type="checkbox" name="check" value="$value" checked="$valueCheck" /> $label - $editedBy @ $editedDate 
    <input type="checkbox" name="check" value="$value" checked="$valueCheck" /> $label - $editedBy @ $editedDate 
    <input type="checkbox" name="check" value="$value" checked="$valueCheck" /> $label - $editedBy @ $editedDate 
    <input type="checkbox" name="check" value="$value" checked="$valueCheck" /> $label - $editedBy @ $editedDate 
    <input type="checkbox" name="check" value="$value" checked="$valueCheck" /> $label - $editedBy @ $editedDate 
    <input type="submit" name="update" value="Update Checklist" /> 
</form> 

所有的變量動態填充時,從數據庫中的數據的頁面加載。這是我的問題...每個輸入和相應的數據都是從「清單」表中的一行中提取的。所以,在上面的例子中,您將查看數據庫中5行的數據。當我勾選一個框並單擊提交時,我希望它將該複選框提交給數據庫,作爲true或false的值,具體取決於該框是否已選中或未選中。如果我只提交一行,我知道該怎麼做;然而,我不知道如何做到這一點與多行。我假設我將不得不使用一些類型的循環與我的UPDATE查詢。

完成此操作的最佳方法是什麼?謝謝你的幫助!如果您有任何問題,請告訴我。對不起,如果不能很好地解釋我的情況。

+1

您可能希望讓我們知道一些事情,什麼是$值,這是什麼平等的嗎?另外,您需要在這些複選框中添加名稱屬性,以便引用它們。此外,您需要爲您的表單標籤添加一個動作和方法屬性,以便它知道在哪裏處理信息以及以何種方式。 – linus72982 2011-04-11 01:35:56

+0

正如linus72982所說:「另外,您需要在這些複選框中添加一個名稱屬性,以便引用它們。」 'name'屬性將是最重要的,它允許您將表單輸入重新綁定到您想要的數據庫記錄。表單輸入的名稱和值是唯一返回到PHP的東西(不包括文件)。你當然可以以數組的形式命名每個輸入(參見:http://php.net/manual/en/language.variables.external.php)... – 2011-04-11 01:40:26

+0

謝謝你們......但是,我確實有在實際表單中所有正確的表單屬性...我只是沒有把它們放在示例中,因爲它們不是這個示例所需要的。是的,輸入字段也具有名稱屬性。我將更新示例代碼以反映名稱,我的$ value等於true或false,取決於框是否已選中或未選中。我更想弄清楚這個表格的發佈部分......而不是表格本身。我只是將值傳遞給post.php,後者將值發佈到數據庫。 – RyanPitts 2011-04-11 01:45:32

回答

1

檢出this page,特別是「UPDATE ===」後面的位。

還沒有嘗試過,但很明顯,您可以在更新查詢中使用CASE語句。

應該適合您的情況。

聽起來像一個壞主意維護明智的,雖然(恕我直言)

+0

謝謝@Ben,我會看看那個。我同意這不是維護最友好的做事方式。這只是一個幫助我的部門工作的副項目。只能像4人一樣使用。 – RyanPitts 2011-04-11 02:19:20

+0

@Ryan。那麼它可能聽起來不像你應該擔心的那樣優化查詢:) – Ben 2011-04-11 02:24:03

+0

感謝您的幫助。實際上我繼續使用ajax,以便可以通過點擊複選框本身而將數據發送到數據庫,而不是讓用戶單擊其他提交按鈕。用這個應用程序需要的東西效果更好。 – RyanPitts 2011-04-14 15:43:54