Javascript 表单验证,数百个复选框

Javascript 表单验证,数百个复选框,javascript,php,html,css,Javascript,Php,Html,Css,因此,我正在构建一个包含200多个问题(不要问lol)的复选框表单,我不希望用户能够在没有至少选中一个复选框的情况下进入结果页面。 问题是,写这样的东西: if (isset($_POST['q1']) || isset($_POST['q2']) || isset($_POST['q3'])..............) 因为数百个问题将是。。。长的有没有办法把它缩短 代码片段: <input type="checkbox" name="q1" onclick="KeepCount()

因此,我正在构建一个包含200多个问题(不要问lol)的复选框表单,我不希望用户能够在没有至少选中一个复选框的情况下进入结果页面。 问题是,写这样的东西:

if (isset($_POST['q1']) || isset($_POST['q2']) || isset($_POST['q3'])..............)
因为数百个问题将是。。。长的有没有办法把它缩短

代码片段:

<input type="checkbox" name="q1" onclick="KeepCount()" value="1">Question 1<br>
<input type="checkbox" name="q2" onclick="KeepCount()" value="1">Question 2<br>
<input type="checkbox" name="q3" onclick="KeepCount()" value="1">Question 3<br>
<input type="checkbox" name="q4" onclick="KeepCount()" value="1">Question 4<br>
<input type="checkbox" name="q5" onclick="KeepCount()" value="1">Question 5<br>
<input type="checkbox" name="q6" onclick="KeepCount()" value="1">Question 6<br>
    <input type="submit" name="button" class="button" value="Submit" /> 
</form>

 <?php 
include 'defaults.php';
if(isset($_POST['button'])) {
   if(isset($_POST['q1'])) {$_SESSION['q1v'] = 1;};
   if(isset($_POST['q2'])) {$_SESSION['q2v'] = 1;};
   if(isset($_POST['q3'])) {$_SESSION['q3v'] = 1;};
   if(isset($_POST['q4'])) {$_SESSION['q4v'] = 1;};
   if(isset($_POST['q5'])) {$_SESSION['q5v'] = 1;};
   if(isset($_POST['q6'])) {$_SESSION['q6v'] = 1;};

   header('Location: results.php');

}
问题1
问题2
问题3
问题4
问题5
问题6

如果将所有复选框的名称设置为:name=“mycheckbox[]”,则可以将post值设置为数组。

如果将所有复选框的名称设置为:name=“mycheckbox[]”,则可以将post值设置为数组。

将其设置为数组:

<input type="checkbox" name="q[1]" onclick="KeepCount()" value="1">Question 1<br>
<input type="checkbox" name="q[2]" onclick="KeepCount()" value="1">Question 2<br>
etc...
对于会话变量,只需执行以下操作:

$_SESSION['q'] = $_POST['q'];
所以也许:

if(isset($_POST['q'])) {
    $_SESSION['q'] = $_POST['q'];
}
使它们成为一个数组:

<input type="checkbox" name="q[1]" onclick="KeepCount()" value="1">Question 1<br>
<input type="checkbox" name="q[2]" onclick="KeepCount()" value="1">Question 2<br>
etc...
对于会话变量,只需执行以下操作:

$_SESSION['q'] = $_POST['q'];
所以也许:

if(isset($_POST['q'])) {
    $_SESSION['q'] = $_POST['q'];
}

因为您有一个命名约定,所以可以在循环中执行此操作:

$checkbox_count = 200;
$prefix = 'q';

for($i = 1; $i <= $checkbox_count; $i++){
   $key = sprintf("%s%u", $prefix, $i);
   if(isset($_POST[$key])){
      $_SESSION[$key.'v'] = 1;
   }
}
$checkbox\u count=200;
$prefix='q';

对于($i=1;$i),由于您有一个命名约定,您可以在循环中执行此操作:

$checkbox_count = 200;
$prefix = 'q';

for($i = 1; $i <= $checkbox_count; $i++){
   $key = sprintf("%s%u", $prefix, $i);
   if(isset($_POST[$key])){
      $_SESSION[$key.'v'] = 1;
   }
}
$checkbox\u count=200;
$prefix='q';
对于($i=1;$i
问题1
问题2
问题3
问题4
问题5
问题6
问题1
问题2
问题3
问题4
问题5
问题6

首先,您可以创建一个类似于bellow的数组

 if($error_status==true){
  header('location: anypage.php');
  }
  else{
  header('location:results.php');
  }
问题1
问题2

然后将该值作为一个数组,如下面所示

 if($error_status==true){
  header('location: anypage.php');
  }
  else{
  header('location:results.php');
  }
$myarray=$\u POST['myarray']`

然后用php foreach检查它们,它们是空的吗

 foreach($myarray as $key=>$value){
  if(!isset($value)){
  $error_status = true}
如果status为true,您可以在任何页面(如bellow)重定向他/她

 if($error_status==true){
  header('location: anypage.php');
  }
  else{
  header('location:results.php');
  }

首先,您可以创建一个类似于bellow的数组

 if($error_status==true){
  header('location: anypage.php');
  }
  else{
  header('location:results.php');
  }
问题1
问题2

然后将该值作为一个数组,如下面所示

 if($error_status==true){
  header('location: anypage.php');
  }
  else{
  header('location:results.php');
  }
$myarray=$\u POST['myarray']`

然后用php foreach检查它们,它们是空的吗

 foreach($myarray as $key=>$value){
  if(!isset($value)){
  $error_status = true}
如果status为true,您可以在任何页面(如bellow)重定向他/她

 if($error_status==true){
  header('location: anypage.php');
  }
  else{
  header('location:results.php');
  }

我会试试这个。谢谢!不太管用。它可以识别数组是创建的,但是它似乎没有在数组中分配任何内容。如果我这样做
If(isset($\u POST['q']){$\u SESSION['q']=$\u POST['q'];echo count($q);
它给了我一个未定义的变量错误,这是因为您没有为
$q
赋值。如果您想要数组
$q
,您需要
$q=$\u POST['q']
啊,是的。我对所有这些都不熟悉。再次感谢,它可以工作。还有一个问题…我该如何在会话中从数组中回显项目?编辑:nvm我得到了它。我会试试这个。谢谢!不太管用。它可以识别数组是创建的,但是它似乎不会在数组中分配任何内容。如果我这样做,
If(isset($\u POST['q']){$\u SESSION['q']=$\u POST['q'];echo count($q);
它给了我一个未定义的变量错误,这是因为你没有给
$q
赋值。如果你想要数组
$q
,你需要
$q=$\u POST['q']
啊,是的。我对这一切都不熟悉。再次感谢,这很有效。还有一个问题……我该如何在会话中从数组中回显项目?编辑:nvm我知道了