猿问

基于所选项目数量的回声

<form action="exercise2.php" method="post"> 

    Type your name: <input type="text" name="name2" ><br>


    Toyota<input name="vehicle[]" type="checkbox" value="Toyota"><br>

    Bmw<input name="vehicle[]" type="checkbox" value="Bmw"><br>

    Audi<input name="vehicle[]" type="checkbox" value="Audi"><br>

    Subaru<input name="vehicle[]" type="checkbox" value="Subaru"><br>


    <input type="submit" name="submit">

</form>

** 事情是这样的;当我不选择任何车辆时,程序崩溃,当它应该在情况 1 中时。**


我想回应车辆,例如检查两种或三个选项时。


<?php


$name = $_POST['name2'];

$vehicles = $_POST['vehicle'];

$cont=0;


foreach($vehicles as $i){

    $cont++;

}


switch($cont){

    case 0:

        echo "You should choose some favs";

        break;

    case 1:

        echo "$name, you should look for more fav cars";

        break;


    case 4:

        echo "$name, I think you have too many fav cars";

        break;

}?>


MMMHUHU
浏览 172回答 1
1回答

慕姐4208626

您正在尝试遍历不存在的数组。未选中时,表单不会在复选框上发送任何内容,因此您需要更改 php:<?php# If you are echoing this back, it's good to sanitize it a bit$name = htmlspecialchars($_POST['name2']);# Make the default be an empty array$vehicles = (!empty($_POST['vehicle']))? $_POST['vehicle'] : [];$cont=0;# This won't fail because it can iterate an empty arrayforeach($vehicles as $i){&nbsp; &nbsp; $cont++;}# 0 should now workswitch($cont){&nbsp; &nbsp; case 0:&nbsp; &nbsp; &nbsp; &nbsp; echo "You should choose some favs";&nbsp; &nbsp; &nbsp; &nbsp; break;&nbsp; &nbsp; case 1:&nbsp; &nbsp; &nbsp; &nbsp; echo "$name, you should look for more fav cars";&nbsp; &nbsp; &nbsp; &nbsp; break;&nbsp; &nbsp; case 4:&nbsp; &nbsp; &nbsp; &nbsp; echo "$name, I think you have too many fav cars";&nbsp; &nbsp; &nbsp; &nbsp; break;}同时打开错误,它会告诉你它不能迭代empty。
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答