Определение переменной в isset

#php #html

#php #HTML

Вопрос:

У меня проблема с моим кодом. Я пытаюсь определить переменную после отправки одной формы и использовать ее после отправки другой. Когда я делаю это, я получаю «Уведомление: Неопределенная переменная: variable …» Бьюсь об заклад, это легко исправить, но я только начинающий.

 <form id="formOne" method="post">
<input method="post" type="submit" name="one" value="Confirm">
</form>

<form id="formTwo" method="post">
<input method="post" type="submit" name="two" value="Confirm">
</form>

<?php

if (isset($_POST['one']))
    {

        $variable="SOME STRING";
    }


    if (isset($_POST['two']))
    {

        echo $variable; 
    }

?>
  

Комментарии:

1. Http — это протокол без состояния. Новый запрос формы означает, что вы запускаете цикл запроса. вы можете избавиться от уведомления, сначала определив пустую переменную, но не получите значение. поэтому используйте a Session variable , который будет доступен для вашего следующего запроса

2. Объявить $variable=» вверху

3. Во втором ‘if’ вы печатаете переменную $, которая определяется только в том случае, если выполняется первое ‘if’

4. <input method="post" недопустимо, нет method on input .

5. Рад, что у вас это сработало.

Ответ №1:

Если $_POST['one'] не приходит, то OR условие сработает, в противном случае оно будет работать как обычно

 if (isset($_POST['one']) || $variable=""){

}
  

Ответ №2:

объявите ее сверху

 $variable="";
if (isset($_POST['one']))
  

и, возможно, вы можете использовать !empty($_POST['one']) на основе вашей бизнес-логики

Комментарии:

1. Вы имеете в виду вот так? <?php $variable=»»; if (!empty($_POST[‘one’])) { $variable=»НЕКОТОРАЯ СТРОКА»; } Если да, то это не сработает : (

Ответ №3:

   $variable ='';

if (isset($_POST['one']))
    {

        $variable="SOME STRING";
    }


    if (isset($_POST['two']))
    {

        echo $variable; 
    }
  

Ответ №4:

Ваш код не будет работать, потому что вы не можете отправить две формы одновременно. Таким образом, когда $_POST[‘two’] доступен, переменная $ никогда не будет иметь значения, потому что $ _POST [‘one’] не был отправлен. Объявление переменной над блоком «if» просто поможет вам обойти уведомление, но код никогда не будет работать.

Ответ №5:

Значения POST отправляются только со следующим запросом. При следующем запросе после этого значения будут забыты (и если появятся новые данные, они будут сохранены вместо них). Вы можете сохранить их несколькими различными способами, примером может служить сеанс — но если вы хотите, чтобы форма была упорядочена по порядку (это означает, что вам нужно отправить, formOne прежде чем вы сможете получить значение в formTwo ), вы можете добавить скрытый ввод во вторую форму, используя значение, зависящее от отправляемой первой формы.

Поместите свой PHP-код перед вашими формами, затем добавьте скрытый ввод во вторую форму, где вы повторяете $variable . Эта переменная устанавливается и определяется с помощью «НЕКОТОРОЙ СТРОКИ» только после отправки первой формы, в противном случае это null .

При отправке второй формы будут перенесены входные данные только внутри этой формы, включая скрытое поле (но не любые данные из первой формы).

 <?php 
$variable = isset($_POST['one']) ? "SOME STRING" : null;

if (isset($_POST['two']) {
    echo $_POST['old_one'];
}
?>

<form id="formOne" method="post">
    <input type="submit" name="one" value="Confirm" />
</form>

<form id="formTwo" method="post">
    <input type="hidden" name="old_one" value="<?php echo $variable; ?>" />
    <input type="submit" name="two" value="Confirm" />
</form>
  

Для method элементов нет <input> атрибута, только для <form> элементов.

Ответ №6:

Спасибо всем. Это работает прямо сейчас.

Я использую переменную сеанса, как сказал @SaadSuri. Я оставляю рабочий код, если у кого-то была подобная проблема.

 <?php

if (isset($_POST['one']))
    {

      $_SESSION['variable']="SOME STRING";
    }


    if (isset($_POST['two']))
    {

        echo $_SESSION['variable'];
    }

?>

<form id="formOne" method="post">
<input method="post" type="submit" name="one" value="Confirm">
</form>

<form id="formTwo" method="post">
<input method="post" type="submit" name="two" value="Confirm">
</form>