php - 通过html表单发送和接收未知数量复选框的状态

标签 php html mysql checkbox

我有一个 MySql 表,我可以通过 HTML 表单进行修改。 MySql 表 有这样的列:

id (int) | name (text) | option1 (boolean) | option2 (boolean)

options 字段的数量会随着时间的推移而增长,并且不固定,但始终包含 bool 数据(0 或 1)。行数也不固定。

我想用 html 表单修改表格,如下所示:

<form action="file.php" method="post">
<table style="width:100%">
  <tr>
    <th>Name</th>
    <th>Option1</th>
    <th>Option2</th>
  </tr>
  <tr>
    <th>lili</th>
    <th><input type="checkbox" name="lili_1"checked></th>
    <th><input type="checkbox" name="lili_2"></th>
  </tr>
  <tr>
    <th>thor</th>
    <th><input type="checkbox" name="thor_1" checked></th>
    <th><input type="checkbox" name="thor_2" checked></th>
  </tr>
  <tr>
    <th>fred</th>
    <th><input type="checkbox" name="fred_1" checked></th>
    <th><input type="checkbox" name="fred_2" ></th>
  </tr>
</table>
<button type="submit">Update</button>
</form>

现在变得棘手了。当我提交表单时,在服务器端我不知道有多少列/行。我想更新整个数据库表(它很小),所以我需要知道列(选项 1、选项 2、...)和行(lili、thor、fred)的每个复选框的状态 ,...)

我的想法是根据字段“名称”的列和值来命名每个复选框。我还需要发送一个包含所有名称和列的数组(因为我只能知道选中的框,而不是未选中的框)。

然后在服务器端,我需要使用列和名称的数组重新创建矩阵,并将 1 放在选中复选框的位置(通过复选框的名称)。

这似乎是一个非常容易出错且实现起来很长的......来完成这样一个简单的任务。有人可以指出我更聪明的方法吗?

谢谢

最佳答案

您可以在 php 后端使用 name="thor[]"name="lili[]" 对复选框进行分组,您可以通过 $_REQUEST 检索它['雷神']。记住它是一个数组。因此,您通过 foreach($_REQUEST['thor'] as $thor){} 循环它,通过 if($thor)

检查值

关于php - 通过html表单发送和接收未知数量复选框的状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31291622/

相关文章:

php - Doctrine Mongo 更新 $pull 查询不起作用

php - array 用php组合三个或更多数组

html - Foundation 6 中的 CSS 提升 Angular

mysql - fatal error : 'mysql/mysql.h' file not found

php - 为什么我无法连接到我的数据库

Php - 您的 PHP 安装似乎缺少 WordPress 所需的 MySQL 扩展

html - 推荐哪一个 : store css file as binary data or content of css file as text format?

javascript - 使用 JavaScript 向下钻取选择选项

mysql - 您将如何合并两个单独查询的结果?

php - 数据库和 Web 服务器位于不同的提供商机器上