php КАК отправить элемент на той же странице, что и форма

#php

#php

Вопрос:

Добрый день! Я новичок в php.. Я создал форму, используя html, где я могу ввести оценку ученика. Затем страница php, чтобы узнать, проходят они или нет. Моя проблема в том, как я могу отправить ответ на html-странице. Пример, как я могу отправить статус «Вам не удалось» на моей html-странице под формой.

Мой код выглядит следующим образом:

  <HTML>
    <BODY>
    Please enter your grade (0-100 only):
    <FORM ACTION="grade2.php" METHOD="POST">
    <table border = "1">
        <tr>
            <td>Grade</td>
            <td><input type="text" name="grade" /></td>
        </tr>
    </table>
    <INPUT type="submit" name="submit" value="grade">
    </BODY>
    </HTML>


<?php

$grade = $_POST['grade'];
IF ($grade>=0 amp;amp; $grade<=50){
    print "You failed";
} ELSE IF ($grade<=60){
    print "You Passed! But Study Harder!";
} ELSE IF ($grade<=70){
    print "Nice";
} ELSE IF ($grade<=80) {
    print "Great Job";
} ELSE IF ($grade<=90){
    print "Excellent";
} ELSE IF ($grade<=100){
    print "God Like!";
} ELSE {
    print "Invalid Grade!";
}   

?>
  

Ответ №1:

Просто используйте одну PHP-страницу, содержащую и форму, и сообщение. Например (предполагая, что ваш файл grade.php )

 <form action="grade.php" method="post">
    <!-- form elements, etc -->
</form>
<?php
if (isset($_POST['grade'])) {
    $grade = (double) $_POST['grade'];
    // if statements, print message, etc
}
?>
  

Ответ №2:

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

Переместить

 </BODY> 
</HTML>
  

в самый конец файла

Ответ №3:

Вы можете использовать два способа.

Вы можете повторить имя файла скрипта:

 <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
  

Или просто оставьте поле действия пустым. Затем страница повторно загрузится сама по себе.

 <form action="" method="post">
  

В верхней части вашего скрипта проверьте наличие переменных POST при перезагрузке:

 if (isset($_POST['submit'])) {
  

И это все.

Комментарии:

1. Никогда не используйте PHP_SELF действие в форме вслепую, не очистив его сначала с помощью htmlspecialchars() или htmlentities() . Google PHP_SELF XSS

2. Может ли кто-нибудь войти, используя второй вариант? Та, что без PHP?

Ответ №4:

Если вы имеете в виду отправить как по электронной почте, используйте функцию mail().

Если вы имеете в виду просто вывести результат на экран, используйте echo.

 <?php

$grade = $_POST['grade'];
IF ($grade>=0 amp;amp; $grade<=50){
    echo "You failed";
} ELSE IF ($grade<=60){
    echo "You Passed! But Study Harder!";
} ELSE IF ($grade<=70){
    echo "Nice";
} ELSE IF ($grade<=80) {
    echo "Great Job";
} ELSE IF ($grade<=90){
    echo "Excellent";
} ELSE IF ($grade<=100){
    echo "God Like!";
} ELSE {
    echo "Invalid Grade!";
}   

?>
  

Кроме того, я не уверен, является ли это стандартом или нет (обычно я так не считаю), но наличие всех заглавных букв в ваших операторах IF / ELSE меня по какой-то причине действительно раздражает.

Комментарии:

1. print и echo выполнить ту же базовую функцию