Я пробую две простые кнопки, которые изменят количество корзины на +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 (оригинальная кнопка плюс плюс добавленная)
Пожалуйста, кто-нибудь может мне помочь найти, где я иду не так? Большое спасибо!