【问题标题】:PHP Form Handling with Multiple Checkboxes带有多个复选框的 PHP 表单处理
【发布时间】:2014-01-18 21:15:40
【问题描述】:

我有一个从数据库中获取问题并自动生成调查页面的页面。然后使用 POST 将此数据发送到相同的表单。然后代码将问题分解为复选框/单选按钮类型,并适当地存储答案。

这非常适合我的单选按钮类型问题,但对于复选框类型,$_POST 数据中只有最后选择的选项。

这是生成的示例复选框问题的 HTML -

1 . Question One 
  <br/>
<fieldset>

        <label for="check[0]">
  <input type="checkbox" class="checkbox" id="check[0]" name="check[0]" value="Opt One" required="required" minlength="2">Opt One 
  </label>

   <br />
      <label for="check[1]"><input type="checkbox" class="checkbox" id="check[1]" name="check[0]" value="Opt Two">Opt Two 
  </label>

   <br />
      <label for="check[2]"><input type="checkbox" class="checkbox" id="check[2]" name="check[0]" value="Opt Three">Opt Three 
  </label>

   <br />
      <label for="check[3]"><input type="checkbox" class="checkbox" id="check[3]" name="check[0]" value="Opt Four">Opt Four 
  </label>

   <br />
    <label for="0" class="error" style="display:none"> Please select at least one option. </label>
  <br/>
</fieldset>

例如,如果这是唯一的问题并且我选择“选项一”和“选项二”,那么 print_r($_POST) 会显示以下内容 -

Array ( [check] => Array ( [0] => Opt Two ) 

这基本上意味着问题 ID 0 的选定选项是选项二(此处错过了选项一)。

如果需要,我可以显示更多代码,但目前我觉得这与我的 HTML 语法有关。

【问题讨论】:

  • 为复选框指定不同的名称并尝试...

标签: php html checkbox


【解决方案1】:
<input type="checkbox" name="check[]" value="Opt One" checked>
<input type="checkbox" name="check[]" value="Opt Two" checked>
<input type="checkbox" name="check[]" value="Opt Three" checked>

<?php print_r( $_POST["check"] ); ?>

输出:

Array ( [0] => Opt One, [1] => Opt Two, [2] => Opt Three ) 

【讨论】:

  • 如果我使用 name="check0[]" 和 name="check1[]" 这也可以吗?更新:好的,它可以工作,但是我命名它的方式是一种糟糕的编程习惯还是可以?
【解决方案2】:

你可以使用name=check[]然后看看你在$_POST得到了什么

【讨论】:

  • 如果我只有一个问题,这会起作用吗?如果我有第二个问题,它不会冲突吗?
  • 它将使用被选中的选项创建一个数组
猜你喜欢
  • 1970-01-01
  • 2015-01-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多