Обновленный массив сессий затем возвращается в исходное состояние. Как это остановить? - PullRequest
0 голосов
/ 11 января 2019

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

Пожалуйста, кто-нибудь может мне помочь найти, где я иду не так? Большое спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...