首页 > 解决方案 > 我需要将额外的值推送到会话中

问题描述

/page1.php/

这是我从数据库中获取类别并将它们作为复选框值的地方。

$allSubCat = $db->select_where('subCategory', 'catId', $allCats->catId);
    $allSubCatArray = array();
    $d = 0;
    foreach ($allSubCat->result() as $allSubCats){

        $d++;
        echo "

<input name='checkBox[]' type='checkbox' class='' value='" . $allSubCats->subCatName . "'>" . $allSubCats->subCatName . ";

/page2.php/

这是我检查是否设置了复选框的地方,如果设置了复选框,则将选中的复选框的值放入 $_SESSION['result']。现在,如果客户返回并检查一些额外的复选框,这些复选框的值新选择的复选框将替换会话中已设置的值。如何防止这种情况并将新选择的值添加到已经存在的值中?

    if (isset($_POST['checkBox'])){

   $checkBoxValue = $_POST['checkBox'];
       $session->set('results', $checkBoxValue);
            header('Location: export.php');

    }else if (!$session->exists('results')){

        echo "U heeft geen adviezen gekozen.";

    }else if($session->exists('results')) {

        echo "<b>U heeft de volgende adviezen gekozen: </b><br>";

        $sessionResult = $session->get('results');

    if ($session->exists('results')) {
        $advice = array_push($sessionResult, $checkBoxValue);
    } else if (!$session->exists('results')) {
        $advice = $checkBoxValue;
    }
}
        echo $advice . "<br>";

标签: php

解决方案


您的 if 语句逻辑已关闭。

在你的第一个 if 语句中,你总是调用 session->set(); 而是在此 if 语句中检查您的 session['results'] 是否已设置。如果不是,则创建它。如果是推动价值观。


推荐阅读