繁体   English   中英

PHP购物车添加项目

[英]PHP Shopping Cart Add Items

我目前正在使用PHP开发购物车,并且试图找出如何使用我编写的代码将商品添加到购物车本身。 我的数据库中的项目正在正确显示,但仅$ item下的最后一个数组被添加到购物车。 以下显示项目。

$result = mysqli_query($cxn,$sql) or die("<p class='error'>Couldn't connect to server.</p>");
while($row = mysqli_fetch_assoc($result))
{
    $product[] = $row;
}
foreach($product as $item)
{
    echo "<div class='product'><form method='post'><div class='img_spacer'><div class='image'>";
    include "images.inc";
    echo "</div></div><div class='name'><h2>".$item['product']."</h2></div>";
    echo "<div class='description'><p>".$item['description']."</p></div>";
    echo "<div class='price'><p>".$item['price']."</p></div>";
    echo "<div class='add_cart'><input type='hidden' name='add' value='yes'>
    <input type='submit' name='add_cart' value='Add to Cart'>
    </div></form></div>";
}

以下代码用于购物车本身。 我目前已将它设置为print_r发送的变量,以便可以看到正在发布的信息。

<?php
if(isset($_POST['add']) and $_POST['add'] == 'yes')
{
    $selected = "select product_ID, product, price from product where product_ID='".$item['product_ID']."'";
    $result2 = mysqli_query($cxn,$selected);
    while($row2 = mysqli_fetch_assoc($result2))
    {
        print_r($row2);
    }
}
?>

我还尝试添加$ item ['product_ID']变量,以使“添加”输入唯一,使用

<input type='hidden' name='".$item['product_ID']."_add' value='yes'>

但我不知道如何向$ _POST数组添加另一个变量。 我还应该提到,我正在为此项目使用会话,而且我不确定如何将其购物车添加到$ _SESSION变量中。 我怎样才能解决这个问题?

您需要向表单添加更多隐藏字段。 至少:

<input type='hidden' name='product_ID' value='".$item['product_ID']."'>

当用户单击“ Add to Cart时,这将向$ _POST数组添加另一个变量。

在每个页面的开头,您应该调用session_start(); 然后,只需将购物车的值分配给会话变量,如下所示:

if(isset($_POST['add']) and $_POST['add'] == 'yes') {
    if (!isset($_SESSION['cart'])) {
        $_SESSION['cart']=array();
    }
    array_push($_SESSION['cart'], $_POST);
}

然后(当用户下订单时)您将清理输入,以防止SQL注入,并添加一个新的SQL查询,也许类似:

//submit selected items
foreach ($_SESSION['cart'] as $cart_item) {
    $pid=scrub($cart_item['product_ID']);
    $amount=scrub($cart_item['amount']);
    $inserted = "INSERT INTO orders (user, product_id, amount, when) VALUES (".$uid.", ".$pid.", ".$amount.", NOW())";
    $result3 = mysqli_query($cxn,$inserted);
}

当然,您必须创建scrub函数来清理您的输入,但这不在问题范围内。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM