【问题标题】:Echo based on number of items selected根据选择的项目数回显
【发布时间】:2020-03-07 14:58:38
【问题描述】:
<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;
}?>

【问题讨论】:

  • 你应该输出你的$_POST变量的内容(例如var_dump),以便在你不检查任何东西时了解其中的内容。
  • $vehicles = $_POST['vehicle'];应该是 $vehicles = !empty($_POST['vehicle']) ? $_POST['vehicle']:[0];
  • 复选框中未选择任何内容时,程序崩溃。有什么想法吗?

标签: javascript php html switch-statement case


【解决方案1】:

您正在尝试迭代一个不存在的数组。未选中时,表单不会在复选框上发送任何内容,因此您需要更改 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 array
foreach($vehicles as $i){
    $cont++;
}
# 0 should now work
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;
}

同样打开错误,它会告诉你它不能迭代empty

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-06-13
    • 2013-10-10
    • 2010-12-14
    • 2022-01-16
    • 2016-05-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多