2015-10-29 2 views
-1

Я изучаю PHP и пытаюсь понять инструкции if .. else немного лучше, поэтому я создаю небольшую викторину. Однако я столкнулся с проблемой, и я, похоже, не знаю, в чем проблема. Моя проблема в том, что всякий раз, когда я печатаю возраст в области ввода, он будет давать мне переменную $yes каждый раз, даже если я введу неправильный возраст.Попытка PHP IF Else Statements в первый раз

Вот мой код до сих пор:
Мой HTML-файл:

<form action="questions.php" method="post"> 
<p>How old is Kenny?<input></input> 
<input type="submit" name="age" value="Submit"/> 
</p></form> 

Мой PHP файл:

<?php 
$age = 25; 
$yes = "Awesome! Congrats!"; 
$no = "haha try again"; 

if ($age == 25){ 
    echo "$yes"; 
}else{ 
echo "$no"; 
} 
?> 
+1

Почему бы не сказать, в чем проблема? – Mike

+0

Ваш сценарий даже не заботится о том, что вы отправляете. Вы определяете '$ age' как 25. Вы сравниваете его с 25. Это всегда будет верно. – Shi

ответ

5

Вы ловите пользовательский ввод внутри $_POST суперглобальном вар (потому что метод вашей формы является POST.

Так

<?php 
$age = 25; 

должен быть

<?php 
$age = $_POST['age']; 

Существует ошибка в HTML тоже. Это

<input type="submit" name="age" value="Submit"/> 

должен быть

<input type="text" name="age" value=""/> 
<input type="submit" value="Click to submit"/> 

Потому что вы хотите один вход и одну кнопку. Таким образом, один элемент html для каждого элемента.

и <input></input> должны быть удалены, так как это не действительный синтаксис :-)

+0

Я пробовал это, и он все еще дает мне неправильный ответ – kenny

+0

Было бы очень полезно, если бы вы могли отредактировать свой пост и объяснить, что делает код; и что вы хотите, чтобы это делалось. – andrewsi

+0

см. Мое редактирование. Дополнительная информация :-) –

-1

Прежде всего, вам нужно повторить variable; echoing "$no" сохранит его как строку. Удалите кавычки из «$ no» и «$ yes» в инструкции if then. В противном случае ваш код кажется звуковым!

+3

Нет, echoing '' $ no "' будет вызывать значение переменной '$ no'. Строка с одним кавычком рассматривается как литерал; строка с двойными кавычками будет интерполировать переменные. – andrewsi

+0

$ Возраст получает 25, это проблема, этот код не звучит! – Coz

0
<?php 
    /* Test that the request is made via POST and that the age has been submitted too */ 
    if($_SERVER['REQUEST_METHOD']=='POST' && isset($_POST['age'])){ 

     /* 
      ensure the age is an integer rather than a string .. 
      though for this not overly important 
     */ 
     $age=intval($_POST['age']); 

     if($age==25) echo "Congratulations"; 
     else echo "Bad luck!"; 
    } 
?> 

<form action="questions.php" method="post"> 
    <p>How old is Kenny? 
     <input type='text' name='age' placeholder='eg: 16' /> 
     <input type="submit" value="Submit" /> 
    </p> 
</form> 

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

1
<form action="questions.php" method="post"> 
<p>How old is Kenny?</p><input type="text" name="age"></input> 
<input type="submit" value="Submit"/> 
</form> 


$age = (int) $_POST["age"]; 
$yes = "Awesome! Congrats!"; 
$no = "haha try again"; 
if ($age == 25) { 
    echo $yes; 
} else { 
    echo $no; 
}