通过POST表单将许多复选框发送到php页面

时间:2018-07-15 21:42:43

标签: php html forms checkbox

我想通过POST方法将输入和复选框的值发送到php页面以更新myql数据库表,问题是我无法接收未选中的复选框,请查看下面的代码:

index.html:

<form id='form1' method='post' action='update.php'>
    <input type='hidden' name='id[]' value='1'>
    <input type='text' name='firstName[]' value='John'>
    <input type='checkbox' name="married[]" value='1' checked>
    <br/>
    <input type='hidden' name='id[]' value='2'>
    <input type='text' name='firstName[]' value='Linda'>
    <input type='checkbox' name="married[]" value='1'>
    <br/>
    <input type='hidden' name='id[]' value='3'>
    <input type='text' name='firstName[]' value='Mercedes'>
    <input type='checkbox' name="married[]" value='1' checked>
    <br/>
    <input type='button' name='submit' value='update'>
</form>

update.php

<?php
    print_r($_POST);
?>

$ _ POST的内容为:

Array
(
[id] => Array
    (
        [0] => 1
        [1] => 2
        [2] => 3
    )

[firstName] => Array
    (
        [0] => 'John'
        [1] => 'Linda'
        [2] => 'Mercedes'
    )

[married] => Array
    (
        [0] => 1
        [1] => 1
    )

就像您看到“已婚”字段仅在选中复选框时一样,这意味着琳达将被忽略,而奔驰将获得梅赛德斯的值1(已婚)。

我该如何解决?

2 个答案:

答案 0 :(得分:1)

快速的解决方案是为字段提供明确的索引:

<input type='hidden' name='id[0]' value='1'>
<input type='text' name='firstName[0]' value='John'>
<input type='checkbox' name="married[0]" value='1' checked>

…,然后1代表下一批,2代表下一批,依此类推。

但是,您可能希望通过同时获取所有三个相关字段来处理结果数据。与其将数据放在三个不同的数组中,不如将它们放在关联数组的数组中:

<input type='hidden' name='person[0][id]' value='1'>
<input type='text' name='person[0][firstName]' value='John'>
<input type='checkbox' name="person[0][married]" value='1' checked>

另一种方法是为复选框赋予唯一的(例如,匹配id[]输入),然后使用该值代替数组中的位置。上面的解决方案可能会更容易。

答案 1 :(得分:0)

这是未选中该复选框的正常行为。

@Scheduled(cron = "30 30 3 * * *")
@TryLock(name = "jobLock", owner = SERVER_NAME, lockFor = THREE_MINUTES)
public void runJobsOnce() {
  List<Job> jobs = jobService.getJobs();
  for(Job job: jobs){
    runJob(job);
  }
}

将输出以下内容

<form method="post" action="/index.php"  enctype="multipart/form-data">
    <input type="hidden" name="id[1]" value="1">
    <input type='text' name='firstName[1]' value='John'>
    <input type='checkbox' name="married[1]" value="Y" >
    <br/>
    <input type="hidden" name="id[2]" value="2">
    <input type='text' name='firstName[2]' value='Linda'>
    <input type='checkbox' name="married[2]" value="Y" checked>
    <br/>
    <input type='hidden' name='id[3]' value='3'>
    <input type='text' name='firstName[3]' value='Mercedes'>
    <input type='checkbox' name="married[3]" value="Y" >
    <br/>
    <input type='submit' name='submit' value='update'>
</form>

但是如果您希望已婚数组用Y或N填充,则可以尝试此操作。

Array
(
    [id] => Array
        (
            [1] => 1
            [2] => 2
            [3] => 3
        )

    [firstName] => Array
        (
            [1] => John
            [2] => Linda
            [3] => Mercedes
        )

    [married] => Array
        (
            [2] => Y
        )

    [submit] => update
)