@Add4Che

Как считывать и сразу выводить что-то на той же странице исходя из введенных в форму данных?

Есть форма с input type=text, в него вводится численное значение, после этого оно сравнивается с, например, значением 33. Исходя из результатов сравнения некоторые данные на странице обновляются. Как это реализовать? Я написал вот это:
<form class="answer-input-div" method="post" action="<?=$_SERVER['PHP_SELF']?>" <?php if($i==5) echo "style='display:none;'"; ?>>
                                                <input type="text" required name="answer" placeholder="Введите ответ в это поле" class="answer-input">
                                                <button class="answer-button" type="submit">Проверить</button>
                                        </form>
<?php
                                            $answerinf = False;
                                            $answertrue = 33;
                                            $usersanswer = $_POST['answer'];
                                            $istinnost = "Нет";
                                            $i = 0;
                                            if ($usersanswer == $answertrue) {
                                                $answerinf = True;
                                            } else {
                                                $i++;
                                            }
                                            if ($answerinf == True) {
                                                $istinnost = "Да";
                                            }
                                        ?>
                                            <h2>Попыток: <?php echo "$i"?>/5.</h2>
                                            <h2>Решение: <?php echo "$istinnost"?>.</h2>

Но после ввода страница просто обновляется, значение i всегда равняется 1, ничего не изменяется. Помогите начинающему.
  • Вопрос задан
  • 209 просмотров
Решения вопроса 1
@AlxMrz
Ну как-то так:
<?php
	session_start();
	if(!isset($_SESSION['count'])) {
		$_SESSION['count']=0;
	}
	if($_SESSION['count']>5) {
		$_SESSION['count'] = 0;
	}

	?>
<!DOCTYPE html>
<html>
<head>
	<title>TEST</title>
	<meta charset="utf-8" />
</head>
<body>
<form class="answer-input-div" method="post" action="<?=$_SERVER['PHP_SELF']?>" <?php if($_SESSION['count']==5) echo "style='display:none;'"; ?>>
	<input type="text" required name="answer" placeholder="Введите ответ в это поле" class="answer-input">
	<button class="answer-button" type="submit">Проверить</button>
</form>
<?php
	$answerinf   = false;
	$answertrue  = 33;
	$usersanswer = $_POST['answer'];
	$istinnost   = "Нет";
	$i = 0;
	if ($usersanswer == $answertrue) {
	    $answerinf = true;
	} else {
	    $_SESSION['count']++;
	}
	if ($answerinf == True) {
	    $istinnost = "Да";
	}
	?>
	<h2>Попыток: <?php echo "{$_SESSION['count']}"?>/5.</h2>
	<h2>Решение: <?php echo "$istinnost"?>.</h2>

</body>
</html>

Но это, конечно, грубое решение. Эту задачу можно решить и через JavaScript. Саму логику расчетов вообще лучше вынести из файла шаблона.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
xmoonlight
@xmoonlight
https://sitecoder.blogspot.com
через сессию $_SESSION[]
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы