这是分配所以不寻找任何完全安全的东西,只是工作。我在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)。 我做错了什么?
答案 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']