如何将数组放入会话?

时间:2011-11-24 15:07:31

标签: php sql arrays session

这是分配所以不寻找任何完全安全的东西,只是工作。我在SQL数据库中有表,我打印所有记录,所有记录都有唯一的参考号,我打印下来的数据库的每一行我给了行的ref值的复选框。数字,当我通过“POST”提交它们时,一切正常并打印出来:

if (!$_POST['checkbox']) {
    echo "Your basket is empty.";
} else {
    echo "<table border='0' id='games_table' cellspacing='1'>";
    echo "<tr id='basket_table_row'>";
    echo "<td colspan='3'>" . "Logged: " . $_SESSION['user'] . "</td>";
    echo "<td colspan ='2'>" . "OS used on this machine: " . "<script type='text/javascript'>document.write(yourOS())</script><noscript>Computers</noscript>" . "</td>";
    echo "</tr>";
    echo "<tr id='basket_table_row'>";
    echo "<td colspan='5'>" . "You put into the basket these games: " . "</td>";
    echo "</tr>";
    foreach ($_POST['checkbox'] as $value) {
        $_SESSION['basket']=array($value);

        $res=pg_query($conn,"select * from CSGames where refnumber='$value'");
        while ($a = pg_fetch_array ($res)) {
            echo "<tr id='games_table_row'>";
            echo "<td>" . $a["refnumber"] . "</td>";
            echo "<td>" . $a["title"] . "</td>";
            echo "<td>" . $a["platform"] . "</td>";
            echo "<td>" . $a["description"] . "</td>";
            echo "<td>" . $a["price"] . "</td>";
            echo "</tr>";   
        }
    }
    echo "</table>\n";
}

但只考虑哪些记录在$ _SESSION ['basket']中的是最后一个复选框的值,但我需要所有这些(60或70)。 我做错了什么?

5 个答案:

答案 0 :(得分:2)

在循环的每次迭代中,你都会覆盖$ _SESSION ['basket']的值。

最后一个值是唯一存储的值。

答案 1 :(得分:1)

目前,您只存储最后一个值,如果您希望存储每个值,您应该像这样添加:

$_SESSION['basket'][] = $value;

答案 2 :(得分:0)

foreach($_POST['checkbox'] as $value){

    $_SESSION['basket']=array($value);

}

循环的每次迭代都会覆盖$ _SESSION ['basket']中的值,因此您只能看到最后一个复选框值。

答案 3 :(得分:0)

在foreach的每个步骤中,您在$_SESSION['basket']中创建一个只包含一个项目的新数组,当前值为$value。它被纠正如下:

// ...
$_SESSION['basket'] = array();
foreach ($_POST['checkbox'] as $value) {
    $_SESSION['basket'][] = $value;
    // ...
}
// ...

答案 4 :(得分:0)

你可以直接这样做

$_SESSION['basket'] = $_POST['checkbox'];

因为$_POST['checkbox']的数据无论如何都是一个数组。 你正在做的是循环$_POST['checkbox']并将每个数据作为数组保存到会话中。

$_SESSION['basket'] = $_POST['checkbox'];

 foreach ($_POST['checkbox'] as $value) {
        $_SESSION['basket'][]=$value;
 }

将具有相同的值。

您所拥有的只保存$_POST['checkbox']

的最后一个值