【问题标题】:How do I add new items to a cart and iterate through them to display using php?如何将新项目添加到购物车并遍历它们以使用 php 显示?
【发布时间】:2012-02-28 06:44:30
【问题描述】:

我正在尝试使用数组将数据从产品页面传递到购物车页面。 viewcart.php 将从上一页收到多个属性(价格、链接、标题和零售商)。我想用一个数组来保存它们。对于客户添加到购物车中的每一个附加项目,我试图获取一个计数器变量 ($i) 来增加一个数组 $_SESSION['cart'][$i]['attribute']。我该怎么做?

我不确定这是将新产品添加到购物车的正确方法。最后,我想要一种能够使用 for 循环显示购物车中所有产品的方法。这是我到目前为止在购物车脚本上的开始:

<?php

  // The shopping cart needs sessions, so start one
  session_start();

  @$link = $_GET['link'];
$price = $_GET['price'];
$title = $_GET['title'];
$retailer = $_GET['retailer'];


  if($link) {
    //new item selected
    if(!isset($_SESSION['cart'])) {
      $_SESSION['cart'] = array();
      $_SESSION['items'] = 0;
      $_SESSION['total_price'] ='0.00';
    }

    if(isset($_SESSION['cart'][$link])) {
      $_SESSION['cart'][$link]++;
    } else {
      $_SESSION['cart'][$link] = 1;
    }


  }

  if(($_SESSION['cart']) && (array_count_values($_SESSION['cart']))) {
    echo " in your cart and we're working to display them";
  } 
  else {
    echo "<p>There are no items in your cart</p><hr/>";
  }

?>

这是我认为可以使用的 for 循环。我正在寻找某种方法来显示数组中的所有项目。

for ($x=0; $x<=$i; $i++)
  {
  echo "The price is " . $_SESSION['cart'][$x][price] . "  Retailer is " . $_SESSION['cart'][$x]    [retailer] . "<br>";
  }

【问题讨论】:

    标签: php session loops cart shopping


    【解决方案1】:

    最简单的方法是在您的数据库中创建一个 temp_cart 表。您应该在其中存储用户添加到购物车中的项目。然后在结帐页面上。您可以使用选择查询简单地显示它们。这样.. 允许用户在 viewcart.php 页面上编辑他们的购物车会更容易。

    【讨论】:

      【解决方案2】:

      你可以: 有另一个带有计数器的会话变量,并在每次添加时递增?

      或者

      $i= Count($_SESSION['cart'])+1;
      

      或者

      根本不指定索引:

      $tmp["cart"]["retailer"] = "123"; 等等等等。

      $_SESSION['cart'][] = $tmp["cart"];

      如果我是你,我会将产品存储到数据库中......

      【讨论】:

        【解决方案3】:

        我不喜欢你这样做的方式。会话管理对于购物车来说非常简单。保持会话尽可能精简。在会话中存储价格是非常糟糕的方式,因为它很容易被操纵。

        这里有一个简单的例子来说明你可以使用什么。

        if(isset($_SESSION['items'][$_GET['item_id']])) {
            $_SESSION['items'][$_GET['item_id']]++; //add one to the total count
        } else {
            $_SESSION['items'][$_GET['item_id']] = 1; //If added for the first time
        }
        

        现在处理它

        foreach($_SESSION['items'] as $id => $count) {
             echo $id; // product id
             echo $count; // product count
        }
        

        PS:记得清理输入。我省略了

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-06-14
          • 1970-01-01
          • 1970-01-01
          • 2023-04-05
          • 2018-02-15
          • 1970-01-01
          相关资源
          最近更新 更多