会话数组更新后又恢复为原始状态,如何停止呢?

时间:2019-01-11 16:39:20

标签: php arrays forms session multidimensional-array

我正在尝试使用两个简单的按钮,它们将根据单击的按钮将购物车的数量更改+1或-1。

我使用2种形式设置这些内容,并使用post设置了隐藏值。

然后我使用“ if”和“ ifelse”语句来确定单击了哪个(如果有)。

我已经将其与一个非常相似的脚本进行了比较(可以工作),但我看不出自己做错了什么。

按钮

<?php
echo ' <form action="' .$_SERVER['PHP_SELF']. '" method="post">
        <input type="hidden" name="bn" value="1" />';
echo '<input type="hidden" name="pr" value="' .$key. '" />';
echo '<button style="min-width:25px;height:25px;background-color:white;"><b>+</b></button>
    </form>';

echo ' <form action="' .$_SERVER['PHP_SELF']. '" method="post">
    <input type="hidden" name="bn" value="2" />';
echo '<input type="hidden" name="pr" value="' .$key. '" />';
echo '<button style="min-width:25px;height:25px;background-color:red;"><b>-</b></button>';
echo '</form>';
?>

以及用于处理POST数据的脚本;

<?php
if($_POST["bn"]=="1")
{
    $_SESSION["cart"][$_POST["pr"]]["quantity"] += 1;
}
elseif($_POST["bn"]=="2") {
    if($_SESSION["cart"][$_POST["pr"]]["quantity"] == 1) { 
        unset($_SESSION["cart"][$_POST["pr"]]);
    }else{
        $_SESSION["cart"][$_POST["pr"]]["quantity"] -= 1;
    }
}
?>

现在,脚本可以重新加载页面并按我单击的按钮修改数量,从而可以正常工作。使用普通输出和print_r(),我可以看到会话数组已更新。但是,如果我现在单击页面上的另一个按钮(相同或不同),脚本将把更新应用回原始数组数据,而不是应该更新的那个。 即如果我整天坐在那里单击+1,我仍然只会得到2(原来的一个加号按钮加上了一个)

请有人可以帮助我找到我要去的地方吗?非常感谢!

0 个答案:

没有答案