Почему я не могу отменить выбор последнего параметра в множественном выборе после сохранения его в переменной сеанса? - PullRequest
0 голосов
/ 17 мая 2018

У меня есть множественный выбор, который сохраняет текущие выбранные параметры, используя переменную сеанса Однако, когда я отменяю выбор всех параметров, последний выбранный параметр остается. Как это исправить? Вот мой код:

<!DOCTYPE html>
<?php
    session_start();

    if(isset($_POST['occupation']))
        $_SESSION['occupation'] = $_POST['occupation'];
?>
<html>
<head>

</head>
<body>
    <form method="post" action="">
        <h2>Industy</h2>
        <select name="occupation[]" multiple >
            <?php 
                $occ = array("Accounting", "Education", "Healthcare", "Information Technology", "Retail", "Sales");

                $len = count($occ);

                for($i = 0; $i<$len; $i++ )
                {
                    if(in_array($occ[$i], $_SESSION['occupation']))
                        echo '<option value="' . $occ[$i] . '" selected>' . $occ[$i] .'</option>';
                    else
                        echo '<option value="' . $occ[$i] . '" >' . $occ[$i] .'</option>';
                } 

            ?>
        </select>
        <br/><br/>
        <button type="submit" value="Search" class="my-button" name="search_button" >Search</button>
    </form>
</body>
</html>

1 Ответ

0 голосов
/ 17 мая 2018

Просто добавьте к своему коду, что если вы отправили без какого-либо значения, просто перезапишите массив сессии пустым.

Вот идея:

<?php
session_start();
$occ = array("Accounting", "Education", "Healthcare", "Information Technology", "Retail", "Sales");

if (empty($_SESSION['occupation'])) { // initialize
    $_SESSION['occupation'] = array();
}

if(isset($_POST['search_button'])) { // if submitted
    // set session occupation else just set empty
    $_SESSION['occupation'] = !empty($_POST['occupation']) ? $_POST['occupation'] : array();
}

?>
<!DOCTYPE html>
<html>
<head>

</head>
<body>
    <form method="post" action="">
        <h2>Industy</h2>
        <select name="occupation[]" multiple>
            <?php foreach ($occ as $o) { ?>
            <option value="<?php echo $o; ?>" <?php echo in_array($o, $_SESSION['occupation']) ? 'selected' : ''; ?>>
                <?php echo $o; ?>
            </option>
            <?php } ?>
        </select>
        <br/><br/>
        <button type="submit" value="Search" class="my-button" name="search_button" >Search</button>
    </form>
</body>
</html>
...