将2个或更多项添加到购物车

时间:2014-02-22 13:46:28

标签: php

所以这是我的问题。我可以在购物车中添加一件商品。但我希望能够添加更多项目。我正在使用表单和GET方法添加项目

  require "connect.php";
  $query = "SELECT `DVDID`, `NameOfTheDVD`, `Quantity`, `Price` FROM `DVD` ";
  $stmt = $dbhandle->prepare($query);
  $stmt->execute();

  $num = $stmt->rowCount();

  if($num>0){
     while ($row = $stmt->fetch(PDO::FETCH_OBJ)){
      if(!isset($_SESSION['cart'])){
    echo "<table border='3' cellpadding='10' position='relative` bottom= '450px' color = 'blue';>";//start table

    echo '<div class="DVD ID">'; 
    echo '<tr><td>DVD Id : '.$row->DVDID. '<br></td>' ;
    echo '<td>Name Of the DVD : '.$row->NameOfTheDVD.'<br></td>';
    echo '<td>Quantity :  '.$row->Quantity.'</td>';
    echo '<td>Price:  '.$row->Price.'</td></tr> ';

    $mydvd = $row->DVDID;
    $name = $row->NameOfTheDVD;
    $Quantity = $row -> Quantity;
    $Price = $row -> Price;

首先,我从数据库中检索产品,然后通过Form和GET方法将它们添加到购物车中

echo '<input type="hidden" name="id" value="'.$mydvd.'">';
    echo '<input type="hidden" name="item" value="'.$name.'">';
    echo '<input type="hidden" name="Quantity" value="'.$Quantity.'">';
    echo '<input type="hidden" name="Price" value="'.$Price.'">';
    echo '<input type="hidden" name="Cart" value="'.$cartItemCount.'">';
    //echo '<input type="submit" value="Add To Basket">';
    echo '<a href = "basket.php?id='.$mydvd.'&name='.$name.'&Quantity='.$Quantity.'&Cart='.$cartItemCount.'&Price='.$Price.'"> Add To Basket</a><br>';

这就是我打印结果的方式

$myid = $_GET['id'];
$DVDname = $_GET['name'];
$Qty = $_GET['Quantity'];
$price = $_GET['Price'];


echo '<div class="DVD ID">';
echo '<h1> Cart </h1>';
echo '<table border="1" cellspacing="1" position="relative" left="250">';
echo  "<tr><th> DVD ID<td> " . $myid .  "</td></th></tr>";
echo  "<tr><th> DVD Name<td> " . $DVDname .  "</td></th></tr>";
echo  "<tr><th> Quantity<td> " . $Qty .  "</td></th></tr>";
echo  "<tr><th> Price<td> " . $price .  "</td></th></tr>";

echo '</div>';

感谢您的帮助

1 个答案:

答案 0 :(得分:0)

我不会为你写完整个代码,而是会给你一些建议,演讲等。

首先,您需要了解使用SESSIONsession_start()session_destroy()变量在PHP中使用$_SESSION的内容和方式。

现在,您的购物车应该存储在一个会话变量中,它应该是并且将是一系列产品。

为简单起见,我建议的结构是:

$_SESSION['cart'] = array(
    12    => array('quantity'=>99),
    15    => array('quantity'=>10)
);

在上面的代码中,12和15是产品ID作为$_SESSION['cart']中的键。这样,如果我们需要更新一些信息,例如添加或减去数量,我们就更容易在数组中找到产品。

此外,上面的示例很简单,为了使其工作,如果要显示购物车,则需要将其放在循环上,然后在循环时从数据库中查询其他信息。您将使用ids(键)进行搜索查询。但是,您也可以在array中将其他信息存储在购物车中添加商品时的数量,这样您就不需要查询数据库中的每个商品了。

要将商品添加到购物车,显然您需要执行$_GET$_POST。我相信你已经知道该怎么做了。

现在,如果您想要多个相同的项目,那么我建议每个项目都有自己的表单,其中包含数量的文本字段。我不知道您的网站是什么样的,或者“客户”何时何地可以将商品添加到购物车中,因此算法,结构等可能会有所不同。

因此,如果有多个不同的项目,那么在将其发布到您的php脚本上进行处理之前,您需要首先验证有效值的javascript帮助。你可以在php级别做到这一点,但我建议你在javascript级别上做。在这里,我说你应该只有1个产品清单表格。我建议不要这样做。

在购物车中添加或更新产品的示例。我在这个例子中使用GET。

if(isset($_GET['product_id'],$_GET['product_quantity']))
{
    $pid = $_GET['product_id'];
    $pq  = $_GET['product_quantity'];
    $_SESSION['cart'][$pid]['qty'] = $pq;
    // if you have more, you can just add something like
    // $_SESSION['cart'][$pid]['name'] = "Apple";
}

从购物车中删除商品:

if(isset($_GET['product_id']))
{
    $pid = $_GET['product_id'];
    unset($_SESSION['cart'][$pid]);
}