Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/85.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 验证是否至少选中了一个复选框_Php_Html_Checkbox - Fatal编程技术网

Php 验证是否至少选中了一个复选框

Php 验证是否至少选中了一个复选框,php,html,checkbox,Php,Html,Checkbox,我有一行复选框,我的目标是让脚本检查三个复选框中是否至少有一个被选中 目前,我可以通过在复选框中添加名称(例如name=“checkbox”)和使用if(空($\u POST['checkbox'))来检查是否选中了个人复选框 以下是我当前的代码和我尝试检查是否至少选中了一个复选框的脚本: <form method="post"> <ul> <li><input type="checkbox">Example</li> <li&g

我有一行复选框,我的目标是让脚本检查三个复选框中是否至少有一个被选中

目前,我可以通过在复选框中添加名称(例如
name=“checkbox”
)和使用
if(空($\u POST['checkbox'))
来检查是否选中了个人复选框

以下是我当前的代码和我尝试检查是否至少选中了一个复选框的脚本:

<form method="post">
<ul>
<li><input type="checkbox">Example</li>
<li><input type="checkbox">Example</li>
<li><input type="checkbox">Example</li>
</ul>
<input type="submit" name="submit">
</form>

<?php 
if(isset($_POST['submit'])) {
$container = $_POST['list'];

if(empty($container)) {
  // checkbox checked
}else{
  // checkbox not checked
}
}
?>

  • 范例
  • 范例
  • 范例

首先,您必须确保从复选框中发布一个值数组

<form method="post" action="file.php">
<ul>
<li><input name="checkbox[]" type="checkbox">Example</li>
<li><input name="checkbox[]" type="checkbox">Example</li>
<li><input name="checkbox[]" type="checkbox">Example</li>
</ul>
<input type="submit" name="submit">
</form>

  • 范例
  • 范例
  • 范例
接下来,您将在本例中的file.php中发布到php页面

<?php
 if(isset($_POST['checkbox'])){
  //Atleast one is checked
 }
?>

或者你可以循环复选框的

<?php 
  $checkboxArray = $_POST['checkbox'];
  foreach($checkboxArray as $checkbox){
   if(isset($checkbox)){
    $isOneSelected = true;
   }
  }
?>

此时的注释太长,并且已经在注释中概述了您需要执行的操作

注:我是从一个“现已删除”的问题中得出这个结论的,因为我打算引用它

请注意,如果要对每个复选框使用相同的名称属性,则需要对所有复选框使用
[]
将其视为数组

例如:
name=“the_name[]”

基于以下几点:

<?php

    if(isset($_POST['test'])){
        $a_counts = array();
        foreach($_POST['test'] as $key => $val){
            if(!isset($a_counts[$val])){
                $a_counts[$val] = 1;
            }else{
                $a_counts[$val]++;
            }
            echo $key." => ".$val."<br>";
        }
        print_r($a_counts);
    }
?>
<form action="" method="POST">
    <input type="checkbox" name="test[]" value="red">
    <input type="checkbox" name="test[]" value="green">
    <input type="checkbox" name="test[]" value="yellow">
    <input type="checkbox" name="test[]" value="blue">
    <input type="submit" value="ok">
</form>

或者像这样更好的解决方案:

<form method="post">

    <label class="heading">Select from the following:</label>
    <input type="checkbox" name="check_list[]" value="Value 1"><label>Value 1</label>
    <input type="checkbox" name="check_list[]" value="Value 2"><label>Value 2</label>
    <input type="checkbox" name="check_list[]" value="Value 3"><label>Value 3</label>
    <input type="checkbox" name="check_list[]" value="Value 4"><label>Value 4</label>
    <input type="checkbox" name="check_list[]" value="Value 5"><label>Value 5</label>
    <input type="submit" name="submit" Value="Submit"/>

</form>

<?php 

      if (isset($_POST['submit'])) {
          if (!empty($_POST['check_list'])) {
              // Counting number of checked checkboxes.
              $checked_count = count($_POST['check_list']);
              echo "You have selected following ".$checked_count." option(s): <br/>";
              // Loop to store and display values of individual checked checkbox.
              foreach ($_POST['check_list'] as $selected) {
                  echo "<p>".$selected ."</p>";
              }
          }
          else {
              echo "<b>Please Select at least One Option.</b>";
          }
      }
    ?>

<?php 

if (!empty($_POST['check_list'])) {
          // Counting number of checked checkboxes.
          $checked_count = count($_POST['check_list']);
          echo "You have selected following ".$checked_count." option(s): <br/>";
           // Loop to store and display values of individual checked checkbox.
           foreach ($_POST['check_list'] as $selected) {
               echo "<p>".$selected ."</p>";
           }
       }
       else {
           echo "<b>Please Select at least One Option.</b>";
       }

从以下选项中选择:
值1
价值2
价值3
价值4
价值5

这是失败的
$\u POST['list']
。你不能在纯PHP中使用那些带有
。您需要用不同的值来命名输入。@Pedrolobi是否为每个复选框指定了相同的名称?@Fred ii-感谢您指出了两个问题。我将
name=“list
ul
元素移动到
表单
。我想这已经有了您想要的答案……不客气。这里需要做的是使用
foreach
计数if
,并在
isset()上检查它
并将它们视为数组,如果它们都将拥有相同的名称属性。感谢对该问题的出色解决方案,我不知道
输入
元素可以被赋予相同的
名称
…我更像一个PHPguy@TheCodesee不客气,很高兴能帮上忙,干杯。是的,他们也可以(如果给定相同的名称),因为它们被视为带括号的数组
[]