【问题标题】:Creating an order system - have a problem where only one of many possible items is being added to order创建一个订单系统 - 有一个问题,即许多可能的项目中只有一个被添加到订单中
【发布时间】:2011-08-14 20:45:07
【问题描述】:

我在控制我正在创建的订单系统的脚本时遇到问题。

系统包含一个搜索功能,可以根据 mysql 表中保存的产品查询用户提供的字符串,如果字符串与项目描述的一部分匹配,则返回该项目作为结果。

现在,问题是这样的。

如果用户搜索返回 5 个结果的字符串。

然后用户决定他们要添加一个结果中的 3 个和另一个结果中的 2 个。

然后他们点击订单,提交表单。

这就是问题出现的地方,因为只有用户输入数量的第一个结果才会添加到订单中。

订单应包含两件商品,一件数量为 3,另一件数量为 2。它没有这样做,我不知道这里出了什么问题。

这里是控制用户点击订单按钮的实例的代码:

if (!isset($_SESSION['order']))
{
    $_SESSION['order'] = array();
}

if (!isset($_SESSION['quantity']))
{
    $_SESSION['quantity'] = array();
}

$productQuantities=$_POST['quantity'];
if (isset($_POST['action']) and $_POST['action'] == 'Order' and $productQuantities > 0)
{
foreach($productQuantities as $productId=>$quantityS)
{
        if ($quantityS > 0) 
            {
            $_SESSION['order']["$productId"] = $productId;
            $_SESSION['quantity']["$productId"] = $quantityS;
            header('Location: .');
            exit();
            }
}
}

谁能看出我在哪里犯了错误?

任何输入都将不胜感激,我将根据要求提供任何其他代码。

谢谢!

【问题讨论】:

  • $productQuantities > 0 ...这个变量是一个数组,为什么要和0比较?

标签: php html forms session input


【解决方案1】:

您创建了一个循环,但在该循环的第一次迭代中,您发送了一个 Location 标头和 exit 脚本执行。显然,一旦您终止脚本并将访问者转到另一个页面,就不能再将更多产品添加到 $_SESSION

不要过早结束循环,只在完成后发送(正确的!)位置标头。

【讨论】:

  • 你就是男人!哈哈,也很简单。非常感谢您在这里的输入,我真的很感激!不过作为旁注,这个应用程序并不是为大众设计的,只有少数用户使用支持这种重定向方法的浏览器。这就是我这样做的原因。还有其他原因我应该注意这种方法吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-01-14
  • 1970-01-01
  • 1970-01-01
  • 2022-10-14
  • 1970-01-01
  • 1970-01-01
  • 2015-06-19
相关资源
最近更新 更多