Как скрыть форму при отправке и показать результат одновременно?

Я делаю форму, но я не работаю так, как хочу. Это код:

<?php
$output = '';
$display_form = True;
//echo $display_form;
//Once the form is submitted it should be hidden so first I set $display_form to false at line 19.
//Then I do all the logic to get the propper result at line 21-39. And echo the result at line 40-43.
if(isset($_POST['submit'])){
$display_form = False;

if (!is_numeric($_POST['mark1'])) {
$mark1 = $_POST['mark1'];

$output = 'De invoer van Getal 1 was foutief: '.$mark1;
}if(!is_numeric($_POST['mark2'])) {
$mark2 = $_POST['mark2'];

$output.= '<br>De invoer van Getal 2 was foutief '.$mark2;
}elseif(is_numeric($_POST['mark1']) && is_numeric($_POST['mark2'])){
$mark1 = str_replace(',', '.', $_POST['mark1']);
$mark2 = str_replace(',', '.', $_POST['mark2']);
$result = $mark1+$mark2;

$mark1_2 = str_replace('.', ',', $mark1);
$mark2_2 = str_replace('.', ',', $mark2);
$result_2 = str_replace('.', ',', $result);

$output = $mark1_2.' + '.$mark2_2. ' = '.$result_2.'<br>';
}?>
<h1>
<?php echo $output ?>
</h1>
<button type="reset" value="Opnieuw">Opnieuw</button>
<?php
}

//If the form isn't submitted $display_form is True so it should show this HTML
if($display_form){ ?>
<h1>Optel rekenmachine</h1>
<form name="form1" method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
Getal 1: <input type="text" name="mark1"><br>
Getal 2: <input type="text" name="mark2"><br>
<button type="submit" value="Optellen!"class="form">Optellen!</button><button type="reset" value="Leegmaken">Leegmaken</button>
</form>
<?php }
?>

Я хочу, чтобы он отображал форму, но после отправки я хочу, чтобы форма скрывала результаты поиска. Когда результаты отображаются, появляется кнопка «Opnieuw». После того, как вы нажмете, форма должна снова появиться, а результаты с помощью кнопки opnieuw должны скрыться. Но сейчас форма не дает результатов и не скрывает, а просто сбрасывается после отправки.

0

Решение

Ваша кнопка отправки не имеет установленного атрибута имени, поэтому вы не отправите ничего, что вы можете проверить в $ _POST. Так добавь name="submit" на эту кнопку:

<button type="submit" name="submit" value="Optellen!" class="form">

Чтобы кнопка «Opnieuw» сделала что-то, оберните ее в форму к тому же сценарию (без каких-либо значений)

0

Другие решения

Вы можете просто добиться этого, используя массив $ _POST, который существует, только если были отправлены данные.

if (isset($_POST)) {

//do your stuff with the data from the form so here basically echo $output

else {

//echo your form

}

Нет необходимости использовать переменную $ display_form.

Вы тоже не нужно чтобы задать имя для отправки ввода, но так как это хорошая практика, чтобы задать имя для каждого ввода, то я предлагаю вам сделать это в любом случае.

0

По вопросам рекламы [email protected]