Эхо в зависимости от количества выбранных предметов - PullRequest
1 голос
/ 12 ноября 2019
<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;
}?>

1 Ответ

0 голосов
/ 13 ноября 2019

Вы пытаетесь перебрать массив, который не существует. Форма ничего не отправляет в чекбоксы, если она не отмечена, поэтому вам нужно изменить свой 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.

...