如何检查复选框是否返回值?错误:“注意:未定义的索引:”


How to check if a checkbox returns a value? Error:"Notice: Undefined index:"

我正在做我最终成绩的期末项目。我目前正在为一所舞蹈学校开发一个与mysql链接的网站。我想检查复选框是否返回值。它在"if($_POST['dansstijl'.$i.''])"处给出了一个"未定义的索引"错误,我不知道我做错了什么。

对不起,如果有荷兰语的部分!

这是代码的很大一部分:

$sql1="INSERT INTO tblinschrijvingen(llnID) VALUES('".$lln_id."')";
   if(!$result1=$mysqli-> query($sql1))
                       {trigger_error('Fout bij query: '.$mysqli->error);}
   else 
   {
       $sql2="SELECT inschrijvingsID FROM tblinschrijvingen ORDER BY inschrijvingsID DESC LIMIT 1";
       if(!$result2=$mysqli-> query($sql2))
                       {trigger_error('Fout bij query: '.$mysqli->error);}
       else 
       {
           for($i=1;$i<=11;$i++)
           {
               if($_POST['dansstijl'.$i.''])
               {
                   $row=$result2->fetch_assoc();
                   $inschrijvingsID=$row['inschrijvingsID'];
                   $sql3="SELECT DansID, vestiging, Dansstijl FROM tbldanslessen WHERE vestiging='".$vestiging."' AND Dansstijl='".$_POST['dansstijl'.$i.'']."'";
                   echo($sql3);
                   if(!$result3=$mysqli-> query($sql3))
                           {trigger_error('Fout bij query: '.$mysqli->error);}
                   else 
                   {
                       $row=$result3->fetch_assoc();
                       $dansID=$row['DansID'];
                        $sql4="INSERT INTO tblinschrijvingenperdansles(inschrijvingsID, dansID) VALUES ('".$inschrijvingsID."', '".$dansID."')";
                        if(!$result4=$mysqli-> query($sql4))
                               {trigger_error('Fout bij query: '.$mysqli->error);}
                       else 
                       { 
                       }
                    }
               }
        }
   }

这是我的复选框:

<table border="0">
  <tbody>
    <tr>
      <td width="199"><label>
        <input type="checkbox" name="dansstijl1" value="Peuterballet" id="dansstijl1">
      Peuterballet</label></td>
      <td width="162"><label>
        <input type="checkbox" name="dansstijl2" value="Preballet" id="dansstijl2">
      Preballet</label></td>
    </tr>
    <tr>
      <td><label>
        <input type="checkbox" name="dansstijl3" value="Preprimary" id="dansstijl3">
      Preprimary</label></td>
      <td><label>
        <input type="checkbox" name="dansstijl4" value="Primary" id="dansstijl4">
      Primary</label></td>
    </tr>
    <tr>
      <td><label>
        <input type="checkbox" name="dansstijl5" value="Klassiek" id="dansstijl5">
      Klassiek</label></td>
      <td><label>
        <input type="checkbox" name="dansstijl6" value="Modern Jazz" id="dansstijl6">
      Modern Jazz</label></td>
    </tr>
    <tr>
      <td><label>
        <input type="checkbox" name="dansstijl7" value="Hedendaags" id="dansstijl7">
      Hedendaags</label></td>
      <td><label>
        <input type="checkbox" name="dansstijl8" value="Musical" id="dansstijl8">
      Musical</label></td>
    </tr>
    <tr>
      <td><label>
        <input type="checkbox" name="dansstijl9" value="Pointes" id="dansstijl9">
      Pointes</label></td>
      <td>&nbsp;</td>
    </tr>
    <tr>
      <td><label>
        <input type="checkbox" name="dansstijl10" value="Hiphop - Breakdance" id="dansstijl10">
      Hiphop - Breakdance</label></td>
      <td><label>
        <input type="checkbox" name="dansstijl11" value="Hiphow - Crew" id="dansstijl11">
      Hiphow - Crew</label></td>
    </tr>
  </tbody>
</table>

正手谢谢你!

朱尔斯

更改

if($_POST['dansstijl'.$i.''])

if (isset($_POST['dansstijl'.$i.'']))

这将检查是否设置了 dansstijl,而不是尝试获取 dansstijl 的值(它可能不存在,因此会给您错误)。

首先,以我的拙见,你需要改进代码的可读性部分。如果你在几周内必须查看代码,你稍后会感谢自己。

其次,您通过插入带有数字的字符串来循环访问 POST 表单。您还需要调试自己的情况,例如,在 if 之后放置一个 echo(),以便知道哪个索引是您无法访问的索引。

此外,代码组织对您来说应该更重要,并在自己的函数中划分逻辑单元,而不是作为 if 子句的嵌套树。

此外,在 PHP 中,您可以将字段作为<input name="hello[1]" value="x" /><input name="hello[2]" value="y" />发送,并且可以在$_POST['hello'][1]$_POST['hello'][2]中获取它们,请参阅 http://php.net/manual/en/reserved.variables.post.php#87650。

 if(isset($_POST['dansstijl'.$i.''])) {
 // query ...