[英]PHP-Shopping cart remove items?
我正在使用PHP和PostgreSQL创建购物车。 我设法使用存储在数组中的参考号将商品放入购物车。 我正在尝试通过允许用户单击复选框(就像我在将商品添加到购物车中所做的那样)然后单击删除复选框来创建删除功能,但是似乎要做的就是刷新页面并移走桌子。
到目前为止,我的代码:
<form action="shoppingcart.php" method="post" style="width: 80%">
<input type="submit" name="RemoveFromCart" value="Remove">
<?php
if(isset($_POST['itemsre']))
{
$n = count($_POST['itemsre']);
for($i = 0; $i < $n; $i++)
{
}
$items = array();
foreach($_POST['itemsre'] as $item)
{
$items[] = pg_escape_string($con, $item);
}
if(!$_SESSION["deletingrows"])
{
$item_string = "'" . implode("','", $items) . "'";
$result = pg_query($con, "SELECT title, platform, description, price FROM CSGames WHERE refnumber IN ($item_string)");
while($result)
{
unset($result);
}
}
}
首先,为了XHTML,您应该关闭<input>
标记。
<input type="submit" name="RemoveFromCart" value="Remove" />
我不确定这是用来干什么的:
$n = count($_POST['itemsre']);
for($i = 0; $i < $n; $i++)
{
}
您的文件中似乎未使用它。 同样,它不会对问题产生太大影响,但是会在确实不需要代码的地方添加代码。
我认为问题最终在于:
while($result)
{
unset($result);
}
PHP的未unset
基本上破坏了局部变量。 这将运行一次,销毁$result
,然后抛出E_NOTICE,说明$result
是未定义的。 查看您的使用方式,您可能需要将查询更改为以下内容:
$result = pg_query($con, "DELETE FROM CSGames WHERE refnumber IN ($item_string)");
这将从您的项目字符串中的参考数字从CSGames表中删除。 但是,如果有多个用户正在使用此工具,则删除一个人的购物车项目可能会删除另一个人的购物车项目。 您需要维护一个cartID(如果用户未登录,则可以将其设置为会话ID,如果用户必须登录,则可以将其设置为用户ID)。
因此,您的目标将如下所示:
<form action="shoppingcart.php" method="post" style="width: 80%">
<input type="submit" name="RemoveFromCart" value="Remove" />
<?php
if(isset($_POST['itemsre']))
{
$items = array();
foreach($_POST['itemsre'] as $item)
{
$items[] = pg_escape_string($con, $item);
}
if(!$_SESSION["deletingrows"])
{
$item_string = "'" . implode("','", $items) . "'";
$cartID = $_SESSION['userID']; // This must be changed to how you maintain unique users!
$result = pg_query($con, "DELETE FROM CSGames WHERE cartID=$cartID AND refnumber IN ($item_string)");
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.