php - 已选中的复选框项目需要添加到 php mysql 数据库中

标签 php mysql database checkbox

我有很多复选框项目,每个员工都可以访问不同的部门。我想将选中的项目添加到数据库中。

如果选中则显示门的访问代码

 $door1 = $_POST['door1'];
 echo ' dooraccess is available for ' .$door1. '<br>'; 

 $door2 = $_POST['door2'];
 echo 'dooraccess is available for  ' .$door2. '<br>'; 

 $door3 = $_POST['door3'];
 echo 'dooraccess is available for  ' .$door3. '<br>'; 

 $door4 = $_POST['door4'];
 echo 'dooraccess is available for  ' .$door4. '<br>'; 

 $door5 = $_POST['door5'];
 echo 'dooraccess is available for  ' .$door5. '<br>'; 

 $door6 = $_POST['door6'];
 echo 'dooraccess is available for  ' .$door6. '<br>'; 

 $door7 = $_POST['door7'];
 echo 'dooraccess is available for  ' .$door7. '<br>'; 

 $door8 = $_POST['door8'];
 echo 'dooraccess is available for  ' .$door8. '<br>'; 

 $door9 = $_POST['door9'];
 echo 'dooraccess is available for  ' .$door9. '<br>'; 

 $door10 = $_POST['door10'];
 echo 'dooraccess is available for  ' .$door10. '<br>'; 

 $door11 = $_POST['door11'];
 echo 'dooraccess is available for  ' .$door11. '<br>'; 

 $door12 = $_POST['door12'];
 echo 'dooraccess is available for  ' .$door12. '<br>'; 

如果未检查值,则会显示如下错误:

Undefined index: door7 in [since door7 was not checked]

将这些值与其他值一起插入数据库的代码 php mysql 数据库

 if(isset($_POST['submit']))
  { 
   $query = "INSERT INTO form_details1(firstname,secondname,location,designation,fileno,doa,doj,cardtype1,cardcolor,cardtype2,door1,door2,door3,door4,door5,door6,door7,door8,door9,door10,door11,door12,door13) VALUES('$firstname','$secondname','$location','$designation','$fileno','$doa','$doj','$cardtype1',$cardcolor,'$cardtype2','$door1','$door2','$door3','$door4','$door5','$door6','$door7','$door8','$door9','$door10','$door11','$door12')"; //query
  if(mysqli_query($connect,$query)){ //check query executed or not
     echo 'inserted' . '<br>' ;
   }

查询没有插入数据库,因为查询有未检查的值

我想使用 if 循环或任何其他方式检查所有已检查的项目,并仅输入那些已检查的项目。我该怎么做?

我的 table 看起来像

+---------+---------+-------+
|   Id    |  door1  | door2 |
+---------+---------+-------+
| Value 1 | Value 2 |   123 |
| Value 2 | NULL    |   123 |
+---------+---------+-------+

The uncheck box will be empty in the table .

what should be the mysql field datatype for array having values that has been selected

最佳答案

首先检查是否设置了复选框: $door1 = isset($POST['door1'])? 1 : 0 ;

然后您的查询有效:员工有权访问的门为 1,其他人为 0。

优化:

  1. 始终按照此处所述使用参数化查询:Parameterized Query

  2. 为了更轻松地遍历您的复选框,您可以像这样设置名称: <input type="checkbox" name="door[1]"> <input type="checkbox" name="door[2]">... 然后循环:

    foreach($_POST['doors'] as $num => $value){

列表项

  1. 规范化数据库(在放置所有门的地方创建一个表 doors。然后使用员工表和门表的外键创建一个 is_checked 表。如果有一个包含员工 ID 和第一个门 ID 的条目,然后该员工可以访问第一扇门。如果需要,添加一扇新门会更容易。)

关于php - 已选中的复选框项目需要添加到 php mysql 数据库中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43027580/

相关文章:

php - 我的 wordpress 插件如何知道学生是谁和用户帐户以及我将如何显示附加信息?

php - 选择第一个 NOT NULL 列,然后获取该列的名称

php - SQL 查询正在运行但随机停止

sql - 使用 oracle db 中的查询获取表名称及其行数

mysql - Redis用户管理系统

php - 如何在 PHP 中使用正则表达式匹配固定数量的数字?

php - 如何在特定时间运行 PHP FILE 并自动更新数据库字段

mysql - mysql 5.6 中的性能问题

php - MySQL 内部连接查询只返回不同的值

c# - ASP.net core 2.0 MVC 每个新的数据库迁移都包含以前迁移的数据