PHP - 如何使用复选框更新多个值?

时间:2014-04-15 14:11:55

标签: php html checkbox

我有一个HTML表,其中包含来自特定数据库表的值。

每个html表都是由我创建的foreach循环生成的,用于获取所有表信息,它们的组织方式如下:

First image

第一个复选框是消除表格行,工作正常,第二个复选框是更新。

我会尝试解释我想要做的事情:

让我们假设您是一个用户,并且您想要从数据库更新某些值,您需要检查要更新的行中的所有复选框,然后单击一个名为“edit”的按钮。 / p>

单击“编辑”后,将显示所选行的所有信息。

我正在尝试从这些选定的行中获取值,但我不知道该怎么做

我已经有了HTML中的代码,我将其插入到foreach循环中

<td><input style='width: 50px;' class='edit' value='Edit' type='submit' name='edit[]' /></td>

  <td><input style='width: 50px;' type='checkbox' name='editcheck[]' value=".$key['id']." /></td>

我正在使用一种具有自己规则的MVC结构,我无法将查询放在视图上。我想在模型中创建一个函数,并在视图上调用此函数。

我该怎么做?

我只想要一些例子,请使用Foreach,谢谢。

1 个答案:

答案 0 :(得分:0)

我有点在这里拍摄蓝色但是......

您已遍历所有这些数据库行,以显示与您的屏幕截图类似的行,从而为用户提供选择她想要编辑/删除的行的选项。

所以我假设您知道如何使用查询从数据库中获取数据。

现在,在显示您的行时,您的复选框会将行的ID作为值获取,这些值将通过post传递到您的处理脚本。

因此,在您的处理脚本中,如果您var_dump您的发布数据($_POST),您应该能够看到点击某些复选框如何影响您收到的数据。所以它可能看起来像这样:

$_POST = array (
  'editcheck' = array(
  3, 6, 9, 12
  )
);

因此,应编辑ID为3,6,9和12的行。

现在,您可以迭代$_POST变量,使用foreach从数据库中读取每一行,或者只是在查询中使用给定的数组。例如:

$query = "SELECT * FROM yourTable WHERE id IN ( " . implode (',', $_POST['editcheck']) ." )";

如果您不了解此功能,请阅读implode。如果您使用MySQL或阅读数据库查询语言并查找类似内容,请阅读MySQL IN Clause。或者,如果您使用某种ORM / DBAL工具(如Propel或Doctrine),请在那里找到相应的工具。

现在,如果您找到一个解决方案,其中一个查询为您提供了editcheck中的所有行,您肯定可以迭代该结果,因为它与以前的方式迭代行完全不同。

我希望这有帮助。 不过,我建议阅读一些非常基本的PHP教程,因为这是非常非常非常基本的东西。