【问题标题】:php logic on a system shopping cart and session value management系统购物车上的 php 逻辑和会话值管理
【发布时间】:2012-04-05 18:37:18
【问题描述】:

这是一个关于php内置电子商务购物车逻辑的问题:

我在购物车中有一个项目与 php 中的会话一起保存,该会话由组合字符串命名,其中唯一键由 product_id 给出:

$this->session->data['quote_total_'.$product_id];

问题是当我在购物车中添加相同的产品但价格不同时 - 价格是由系统在错误、选项和数量发生变化时自动生成的 - 实际上,购物车会话的第一个值即第一个产品价格的值被新的值覆盖。哪种方法可以为您避免这种覆盖?

我正在考虑在会话名称处附加一个唯一值,但我不明白哪些...

【问题讨论】:

    标签: php session logic shopping-cart


    【解决方案1】:

    让这个变量成为数组而不是原始数据类型怎么样?

    【讨论】:

      【解决方案2】:

      不要使用产品 ID 作为密钥,而是让密钥自动创建,该密钥将是数字并随每个产品递增

      // add a product - new product will always be added
      $this->session->data[] = array(
          'product_id' => 123,
          'qty' => 1,
          'name' => 'Product Name',
          'price' => 10
      );
      
      
      // you can iterate over the products like
      foreach($this->session->data as $product)
      {
          print_r($product);
      }
      

      【讨论】:

        【解决方案3】:

        在会话变量中附加价格和产品ID,以唯一标识具有不同价格的每个产品。还可以使用数组来存储多个产品。

        【讨论】:

        • 我曾经尝试过,但我无法从之前的 POST 中恢复价格
        • 添加产品时,有价格吗?
        • 对于像 id 这样的价格添加到会话名称中,我必须更改整数中的浮点数,只需将逗号替换为空,然后,在我需要的购物车方法 getProducts() 中检索价格知道价格,所以我不能工作,我想......我是对的吗?
        • 相反,您可以使用产品 ID 和价格作为字符串并将它们连接起来以唯一地标识具有不同价格的每个产品。例如产品 id=123 和价格是 45.2 然后 $this->session->data['123'.'45.2'];
        • 我不明白它不会工作,这是你可以做我想要展示的页面,填写表格并点击蓝色按钮“acquista”然后你可以看到购物车更新了,修改宽高输入栏["Base (cm)"; Altezza (cm)],看看购物车然后你会看到发生了什么:有两种产品有不同的选择但价格相同,最后一个......
        【解决方案4】:

        创建多维数组如

        $data = array([0]=>array(
            'product_id' => 123,
            'qty' => 1,
            'name' => 'Product Name',
            'price' => 10),
            [1]=>array(
            'product_id' => 123,
            'qty' => 2,
            'name' => 'Product Name',
            'price' => 20)
        );
        

        【讨论】:

        • 这不是一个好主意。如果是相同的产品,数量必须是3,价格应该是30。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-27
        • 1970-01-01
        • 2020-03-17
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多