2011-04-11 54 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