【发布时间】:2012-05-01 05:59:36
【问题描述】:
我正在创建一个迷你购物车,我想知道是否有办法从会话中获取数据并将其写入数据库。 用户选择的零件应该被添加到他们的购物车中。完成后,我将如何获取存储到会话中的数据,并将其写入数据库,以便他们下次登录时购物车仍然存在?
<?php
if (isset($_GET['add'])) {
$quantity = mysql_query('SELECT partID, quantity, catergory FROM computerparts WHERE partID=' . mysql_real_escape_string((int) $_GET['add']));
while ($quantity_row = mysql_fetch_array($quantity)) {
if ($quantity_row['quantity'] != $_SESSION['index_' . $_GET['add']]) {
$_SESSION['index_' . $_GET['add']]+='1';
}
}
header('Location: ' . $page);
}
if (isset($_GET['delete'])) {
$_SESSION['index_' . (int) $_GET['delete']] = '0';
header('Location: ' . $page);
}
function cart() {
$total = "";
$sub = "";
foreach ($_SESSION as $name => $value) {
if ($value > 0) {
if (substr($name, 0, 6) == 'index_') {
$id = substr($name, 6, (strlen($name) - 6));
$get = mysql_query('SELECT partID, partName, price FROM computerparts WHERE partID=' . (int) $id);
while ($get_row = mysql_fetch_array($get)) {
$sub = $get_row['price'] * $value;
echo $get_row['partName'] . 'x' . $value . '@ £' . $get_row['price'] . '=' . $sub . '<a href="index.php?delete=' . $id . '">Delete</a> <br />';
}
}
$total += $sub;
}
}
if ($total == 0) {
echo 'Your cart is empty';
} else {
echo 'Total: £' . $total;
}
}
?>
为了让事情变得更容易,我从这个网站上删除了一些功能。将不会购买任何物品,所有发生的事情是用户选择他想要的物品并保存在他希望您可以将其引用到规范的任何时候访问该信息。 (规格表)他选择的项目将被写入该表。使用当前登录的用户 ID。
【问题讨论】:
-
你尝试过的逻辑是什么
-
你如何确定
when the user done?点击注销?点击done按钮?还是直接离开页面? -
那么您希望将代码的哪些部分添加到数据库中,以及以什么方式和方法?
-
我认为您没有有效地使用会话。或者至少,您没有在代码顶部开始会话或显示信息在会话全局中的存储位置。如果您有购物车数据的特定会话密钥,例如
$_SESSION[cart],也许调试起来会更容易? -
点击完成。 @think123 我只需要写入数据库的部分ID(选择的项目)以及当前的用户ID。大概是这样的