【问题标题】:How to update $_SESSION variable using update quantity input box如何使用更新数量输入框更新 $_SESSION 变量
【发布时间】:2011-11-24 12:33:38
【问题描述】:

我使用this 示例使用 PHP 创建了一个添加到购物车页面。 2个页面的php代码在这里:

http://jameshamilton.eu/sites/default/files/products.php_.txt

http://jameshamilton.eu/sites/default/files/cart.php_.txt

在购物车页面上,我创建了一个数量输入框和一个尝试更新每件商品数量的更新链接。示例said 的作者需要做什么,以更新数量。但是,我在执行此操作时遇到了麻烦。

我不确定如何使用用户在购物车页面的数量框中输入的内容来更新 $_SESSION['cart'] 中存储的数量。我假设在这种情况下的 switch 语句中必须存在一些代码:更新,以便更新链接调用操作:更新,更新每件商品的数量。

有人可以告诉我要使用什么代码来更新 $_SESSION['cart'],使用 this 示例吗?我尝试联系示例的作者,但他没有回复。

更新:这是我正在使用的代码的相关部分:

https://soc.uwl.ac.uk/~21099475/code.txt

【问题讨论】:

  • 您发布的示例运行良好。向我们展示您的代码以找出问题所在。

标签: php session post


【解决方案1】:

由于可能需要更新多个产品,因此您需要一个表单来执行此操作。 这是一个了解您必须做什么的示例。

<form action="<?php echo $_SERVER[PHP_SELF]?>?action=update" method="post">
    <input type="text" name="quantity[2]" value="3" />
    <input type="text" name="quantity[3]" value="2" />
    <input type="text" name="quantity[4]" value="1" />
    <button type="submit" name="submit">Update</button>
</form>

提交表格后,您必须检查已发布的数量并增加或减少它们。

if(!empty($_POST['quantity'])) {
        foreach($_POST['quantity'] as $productID => $quantity) {
            if(!empty($_SESSION['cart'][$productID])) {
                $quantity = intval($quantity);
                if($quantity > 0) {
                    $_SESSION['cart'][$productID] = $quantity;
                }
                else {
                    unset($_SESSION['cart'][$productID]);
                }
            }
        }
    }

我认为这个例子会让你继续前进。

【讨论】:

  • 感谢您的代码。当我尝试更新某个项目的数量时,foreach 循环会出现一条错误消息。尝试在此处添加到购物车:21099475.site90.com/buyNow.php 然后使用更新按钮更新数量,然后会出现错误。更新的php代码在这里soc.uwl.ac.uk/~21099475/code.txt
  • 再次检查我的示例(html)。您应该将输入的名称属性更改为数组。例如数量[2],其中 2 是产品的 ID。
  • 您还应该记住,这是一个指示性示例,只是为了让您开始。您应该添加额外的安全性(检查用户输入,检查产品是否实际存在等)
【解决方案2】:

您无法更新会话,但可以使用以下逻辑。

首先你取消你的会话

unset($_SESSION['cart']['product_id']); //don't unset session,unset only quantity session 

现在创建一个会话

$_SESSION['cart']['product_id'] = 4; //updated value

【讨论】:

  • 你在说什么?当然,您可以更新会话值。你不需要取消它。如果您要发布答案,请至少知道您在说什么。谢谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多