PHP-购物车删除项目?

时间:2012-11-29 13:47:17

标签: php postgresql

我正在使用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);
            }
        }
    }

1 个答案:

答案 0 :(得分:1)

第一个烦恼:你应该关闭你的<input>标签,只是为了XHTML。

<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)");
        }
    }