PHP复选框,未选中框选项

时间:2014-04-12 18:48:48

标签: php html checkbox

如果取消选中该复选框,我试图设置我的复选框,它会在我的.txt文件中保存为空白(跳到下一个)(“”)/ tab(“\ t”),并且至少检查了1box。这是我的代码:

我的HTML

<p>Hobbies:
    <input type="checkbox" name="ahobby[]" value="swimming" />Swimming
    <input type="checkbox" name="ahobby[]" value="reading" />Reading
    <input type="checkbox" name="ahobby[]" value="gaming" />Playing Games
</p>

和我的php

至少打了一个方框:

  

if(!isset($ _POST [“ahobby”])|| empty($ _ POST [“ahobby”])){

  $err_msg .= "<p>Please select your Hobby</p>";
     

}

以下保存未勾选为空白/标签的复选框,然后保存到下一个项目

$check_ary = array ("swimming", "reading", "gaming");

$h = 0;

for ($i = 0; $i < count($check_ary);$i++) {

    if ($check_ary[$i] == $ahobby[$h]) {

        fwrite($handle, "$ahobby[$h]\t");

        $h++;

    } else { // saves a blank

        fwrite($handle, "\t");

    }

}

// to the next line by using new line
fwrite($handle, "\n");

fclose ($handle);

当我没有选择第三个复选框(游戏)时出现问题,它表示未定义的偏移量:1,如果我单独加厚第3个盒子/ 3个(游戏)&amp; 1(游泳)/ 3(游戏)&amp; 2(阅读),完全没有问题。而不是创建一个新行(\ n),它只是创建一个新标签。 有人有答案吗?谢谢!

1 个答案:

答案 0 :(得分:0)

您可以考虑将代码放在if条件中,如下所示:

     $check_ary = array ("swimming", "reading", "gaming");
     $check_empty = 0;

     for ($i = 0; $i < count($check_ary);$i++) {

         if (isset($ahobby[$i])) {

             if ($check_ary[$i] == $ahobby[$i]) {

                fwrite($handle, "{$ahobby[$i]}\t");

             } 
         } else { 
             // Keeps track of the empty checkboxes;
             $check_empty++;                          
         }

         if ($check_empty >= 3) {
               fwrite($handle, "\t");
         }

    }