@Valenco

Почему это условие не работает?

<?php
$num_ask = 0;
    if(isset($_POST['go'])){
        $num_ask++;
        $_POST['go'] = null;
    }
?>
 <form method="POST" action="">
            <?php echo $ask[$num_ask]["win_answer"] ?>
            <input type="radio" value="<?php echo $ask[$num_ask]["win_answer"] ?>" name="answer">
            <br>
            <?php echo $ask[$num_ask]["lose_answer"] ?>
            <input type="radio" value="<?php echo $ask[$num_ask]["lose_answer"] ?>" name="answer">
            <br>
            <input type="submit" value="Подтвердить овтет" name="go">
        </form>

Почему в первый раз проверка срабатывает, но во второй раз уже не работает (хотя значение $_POST['go'] = null после проверки)
  • Вопрос задан
  • 122 просмотра
Пригласить эксперта
Ответы на вопрос 1
delphinpro
@delphinpro Куратор тега PHP
frontend developer
Условие срабатывает как и положено.

Писать что-то в массив $_POST не имеет смысла, он будет всегда создан новым при следующем запросе.
Точно так же между запросами не сохраняются переменные. И получается, что вы каждый раз сбрасываете счетчик в ноль, а тут же увеличиваете его до единички.

Данные между запросами можно хранить в сессии.

session_start();
$num = $_SESSION['num'] ?? 0;
$num++;

$_SESSION['num'] = $num;

Или передавать через ту же форму

$num = (int)($_POST['num'] ?? 0));
$num++;

<input type="hidden" name="num" value="<?=$num?>">
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы