php删除按钮保持检索发布的信息

时间:2010-01-01 14:01:33

标签: php button submit cart

我很快发现我是php的初学者,所以请光临我!

我有一个快速的问题,我有一个购物车的删除按钮,代码每次都适用于它,除了购物车中的最后一个产品。如果某人按下addtoCart按钮,则会使用?buyproduct=$productNumber重新加载该URL,并且当按下删除按钮时,将删除该产品。对,所以一切都很好,但是当你试图删除最后一项时,它会继续读取URL中的产品。因此,当前$productNumber的数量仍为1。

我已尝试在表单方法标记中添加操作,以便在没有?buyproduct=$productNumber的情况下重新加载页面,这确实有效,但是页面编号和部分也在URL中,这些也会重置。

我知道删除工作正常,因为一旦?buyproduct=$productNumber从URL中消失(例如,如果他们转到目录中的另一部分就会发生这种情况),那么购物车就可以完全清空。

2 个答案:

答案 0 :(得分:0)

您可以谨慎地调查现有操作的作用,而不是更改form action。似乎这可能就像设置或取消设置一些GET变量一样简单。

您可以从表单操作中指定的脚本发布一些代码吗?

答案 1 :(得分:0)

很明显,您的产品移除表单提交被您的FORM操作也尝试将产品重新添加到购物车的事实所抵消。也许您最简单的解决方案是添加一个开关到您的FORM操作,如?remove=1,然后您可以在处理buyproduct的情况之前检查,完全跳过该部分。

请注意,这不是最干净的解决方案,因为您将不必要的GET变量发送到服务器(主要是buyproduct)。解决方法可能是您只需为表单操作重新生成查询字符串:

// allowed keys is used to sanitize GET data by only allowing a predefined
// set of keys to be submitted with the form
$allowed_keys = array('page' => true, 'limit' => true, 'othervar' => true);
$str = 'path_to_form_action.php?';
foreach ($_GET as $k => $v) {
    if (isset($allowed_keys[$k])) {
        $str .= $k . '=' . $v . '&';
    }
}
$str = substr($str, 0, -1);

然后,您需要使用$str作为您的FORM操作:

<form action="<?php echo $str; ?>" method="GET">