Как получить доступ к данным $ _POST для нескольких форм

0

Для приложения корзины покупок я работаю над классом, я должен отображать информацию на каждом шагу. Моя проблема в том, что я могу отображать информацию только с предыдущего шага. Для шага 1 элемент выбирается из окна радио. Затем он сохраняется следующим образом:

        function processStep1() {
            //Implemented sessions
            $_SESSION["items"] = $_POST["items"];
            displayStep2();
        }

Шаг 2 запрашивает количество, а затем проверяет его, например:

        function processStep2() {
            //Implemented sessions
            $_SESSION["quantity"] = $_POST["quantity"];
            if ( preg_match('/^\d+$/',$_POST["quantity"]) ) {
            displayStep3();
            } else {
            echo "ERROR: Quantity entered was invalid. Please try again.";
            displayStep1();
          }
        }

(В стороне, я не могу заставить это просто обновить текущий шаг (который будет displayStep2), когда вход не является целым числом, поскольку я получаю ошибку каждый раз, когда я пытаюсь это сделать. ответ на вопрос, почему это так, что также полезно.)

Но затем на шаге 3 формы я пытаюсь запустить следующую строку:

            <p>You have selected <?php echo $_POST["quantity"] ?> units of the <?php echo $_POST["items"] ?>.<p>

Каждый раз отвечает на ошибку. Я пробовал различные конфигурации этого же вывода и решил, что он будет всегда анализировать $ _POST ["количество"], но никогда не $ _POST ["items"]. Мне нужно, чтобы и то, и другое.

Теги:
forms

1 ответ

2
Лучший ответ

Ваша третья форма не "видит" $ _POST ['items'], потому что она не была отправлена в эту форму. Вместо этого вы сохранили его в сеансе. Начните новый сеанс в третьей форме и запросите $ _SESSION ['items'].

Шаг 1

<form name="step1" method="post" action="whateverPageContaintsProcessStep1.php">
    <input type="radio" name="items" value="item1">Item 1
    <input type="radio" name="items" value="item2">Item 2
</form>

Когда мы отправляем нашу форму, данные $ _POST, которые будут отправляться, будут значением выбранного нами переключателя.

Шаг 2

<form name="step2" method="post" action="whateverPageContaintsProcessStep2.php">
    <input type="number" name="quantity" value="0" />
</form>

Когда мы отправляем form2, данные $ _POST будут содержать значение текстового поля, называемого количеством, однако, поскольку эта форма не содержит предыдущих переключателей, это значение не будет отправлено на сервер, и поэтому мы не сможем получить к нему доступ в ' whateverPageContaintsProcessStep2.php.

  • 0
    Шокирующе простой, но эффективный ответ. Становится очевидным, что я ужасен в PHP. Тем не менее, это прекрасно работает, так что спасибо!
  • 0
    Обновлен пример передачи данных между страницами.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню