Для приложения корзины покупок я работаю над классом, я должен отображать информацию на каждом шагу. Моя проблема в том, что я могу отображать информацию только с предыдущего шага. Для шага 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"]. Мне нужно, чтобы и то, и другое.
Ваша третья форма не "видит" $ _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.