Показать массив из PHP с помощью флажка HTML формы - PullRequest
0 голосов
/ 13 декабря 2018

У меня есть форма флажков, как показано ниже:

<form method="POST" action="display.php">
    <input type="checkbox" value="1" name="options[]"> 
    <span class="checkboxText"> Fruits</span>
    <input type="checkbox" value="2" name="options[]"> 
    <span class="checkboxText">Vegetables </span><br><br>
    <button class="button" type="submit" value="display">DISPLAY</button>
</form>

Я получаю options[], используя $_POST['options'] и сохраняю массив данных в переменной.Я хочу отобразить массив фруктов, если флажок фруктов установлен, массив овощей, если флажок овощей установлен, и отобразить оба из них, если оба отмечены, и отобразить сообщение «Фрукты и овощи здоровы».Это php-код, который у меня есть, но он, кажется, не работает так, как мне бы хотелось.

<?php
    $values = $_POST['options'];
    $n = count($values);
    for($i=0; $i < $n; $i++ )
    {
        if($values[$i] === "1"  && $values[$i] == "2")
        {
            //iteration to display both tables
            echo 'Fruits and Vegetables are healthy';
        }           
        else if($values[$i] === "1")
        {
            //display fruits
        }
        else if( $values[$i] == "2")
        {
            //display vegetables        
        }       
    }
?>

Проблема с моим php-кодом заключается в том, что он не входит в первый, если вообще,Он просто отображает обе таблицы из двух других if (поскольку эхо также не отображается).Есть ли способ, которым я мог бы решить это?

1 Ответ

0 голосов
/ 13 декабря 2018

Вам не нужен цикл для этого.Вам просто нужно проверить $_POST['options'] для каждого из рассматриваемых значений.Я бы предложил использовать текст, который вы хотите отобразить, в качестве значений для ваших флажков, чтобы вам не приходилось преобразовывать цифры в слова.

<input type="checkbox" value="Fruits" name="options[]">
<span class="checkboxText"> Fruits</span>
<input type="checkbox" value="Vegetables" name="options[]">
<span class="checkboxText">Vegetables </span><br><br>

Затем для отображения просто выведите массивы фруктов / овощейв зависимости от того, присутствуют ли эти значения в $_POST['options'].

if (!empty($_POST['options'])) {

    echo implode(' and ', $_POST['options']) . " are healthy";

    if (in_array('Fruits', $_POST['options'])) {
        // show the fruits
    }

    if (in_array('Vegetables', $_POST['options'])) {
        // show the veg
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...