@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 после проверки)
  • Вопрос задан
  • 121 просмотр
Пригласить эксперта
Ответы на вопрос 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?>">
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
YCLIENTS Москва
от 200 000 до 350 000 ₽
Ведисофт Екатеринбург
от 25 000 ₽
Бюро Цифровых Технологий Санкт-Петербург
от 120 000 до 180 000 ₽
04 мая 2024, в 14:12
3500 руб./за проект
04 мая 2024, в 13:51
10000 руб./за проект
04 мая 2024, в 13:23
4000 руб./в час