我有很多复选框项目,每个员工都可以访问不同的部门。我想将选中的项目添加到数据库中。
如果选中则显示门的访问代码
$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。
优化:
始终按照此处所述使用参数化查询:Parameterized Query
为了更轻松地遍历您的复选框,您可以像这样设置名称:
<input type="checkbox" name="door[1]"> <input type="checkbox" name="door[2]">...
然后循环:foreach($_POST['doors'] as $num => $value){
列表项
- 规范化数据库(在放置所有门的地方创建一个表 doors。然后使用员工表和门表的外键创建一个 is_checked 表。如果有一个包含员工 ID 和第一个门 ID 的条目,然后该员工可以访问第一扇门。如果需要,添加一扇新门会更容易。)
关于php - 已选中的复选框项目需要添加到 php mysql 数据库中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43027580/