php форма - на подання залишитися на тій же сторінці

У мене є форма PHP, яка знаходиться на contact.html

Форма обробляється з processForm.php

Коли користувач заповнює форму і натискає на відправку, processForm.php посилає електронну пошту і направляє користувача на - processForm.php з повідомленням на цій сторінці "Успіх! Ваше повідомлення надіслано".

Я не знаю багато про PHP, але я знаю, що дія, що вимагає цього:

// Die with a success message
die("Success! Your message has been sent.");

Моє питання, як я можу зберегти повідомлення всередині форми div без перенаправлення на processForm.php сторінка?

Я можу розмістити весь processForm.php, якщо це необхідно, але це довго.

Дякую

23
додано Автор Mawg, джерело
ajax або надсилати на ту ж сторінку. Я віддаю перевагу публікації на тій же сторінці.
додано Автор Nick Maroulis, джерело
заголовок ("contact.html? result = success");
додано Автор BlitZ, джерело
додано Автор underscore, джерело
Подібне питання (з парою налаштувань) нижче: [php, форма з використанням тієї ж сторінки після подання] [1] [1]: PHP form, використовуючи ту ж сторінку після подання "> stackoverflow.com/questions/15130493/…
додано Автор Bassem, джерело
де я поклав заголовок, в contact.html або processForm.php?
додано Автор mewebs, джерело

7 Відповіді

Щоб залишитися на одній сторінці, ви можете залишити дію порожньою ( action = "" ) у тезі форми або залишити її взагалі.

Для повідомлення створіть змінну ( $ message = "Успіх! Ви ввели:.. $ Input;" <? PHP echo $ message;?> .

Подобається це:

<?php    
if(isset($_POST['SubmitButton'])){ //check if form was submitted
  $input = $_POST['inputText']; //get input text
  $message = "Success! You entered: ".$input;
}    
?>

<html>
<body>    
<form action="" method="post">
<?php echo $message; ?>
  <input type="text" name="inputText"/>
  <input type="submit" name="SubmitButton"/>
</form>    
</body>
</html>
24
додано
Ви перевірили код? 1) На першому запуску, перед поданням, ви отримуєте "Невизначене повідомлення про зміну" (звичайно!) 2) Потім при кожному поданні завантажується нова форма, що відображає повідомлення, і всі вони побудовані в історії браузера! Чому ви не перевіряєте свої коди, перш ніж розмістити їх ???
додано Автор Apostolos, джерело
Я не пам'ятаю. Я не працюю з PHP, оскільки близько року тому плюс у мене немає сервера Apachi, доступного на даний момент для тестування. Вибачте. Але я пам'ятаю, що мені вдалося залишитися на тій самій сторінці (наприклад, у файлі PHP), використовуючи "include" ...
додано Автор Apostolos, джерело
Я вирішив проблему з редагуванням
додано Автор Austine Gwa, джерело
@Apostolos так як я можу йти про використання цього прикладу правильний шлях? що потрібно змінити?
додано Автор Lyux, джерело
Додайте if (isset ($ message)) {...} навколо echo $ message; , щоб переконатися, що "Notice: Undefined message message" більше не з'являється.
додано Автор Tom Groot, джерело

Найкращий спосіб залишитися на одній сторінці - це розміщення на одній сторінці.

<form method="post" action="<?=$_SERVER['PHP_SELF'];?>">
13
додано
Існує приклад цього коду в html- form-guide.com/php-form/php-form-action-self.html
додано Автор Mawg, джерело
Слід зазначити, що цей метод не проходить перевірку HTML-перевірки на W3 Validator , як сказано " Неправильне значення для дії атрибута у формі елемента: не повинно бути порожнім. "HTML, безумовно, працює так, що викликає помилку: <form name =" frmContactUs "action =" "method =" post ">
додано Автор Kendall Roth, джерело
Це, звичайно, зрозуміло, плюс він нічого не змінює, оскільки це те ж саме з action = "", що вже згадувалося вище.
додано Автор Apostolos, джерело

Є два способи зробити це:

  1. Надіславши форму на ту ж сторінку. (Це можна зробити, встановивши дію форми на той самий URL-адресу), у такому випадку вам доведеться обробляти подану форму за допомогою PHP-скрипта.
  if (isset ($ _ POST ['submit']))
{
   // Введіть код, який потрібно виконати після подання форми

  // Dispaly Успіх або невдача Повідомлення, якщо такі є
}
інше
{
    // Відображення форми та кнопки "Відправити"
}
 

2.Використання AJAX Form Submission, що трохи складніше, ніж перший метод для початківця.

11
додано
Так, це працює, принаймні частково. Ви не залишаєтеся на тому ж самому місці - оскільки результат відображається на новій сторінці - але це набагато краще, тому що маєте , щоб повернутися на першу сторінку, тим самим уникнувши розгортання копії одного і того ж PHP в історії браузера.
додано Автор Apostolos, джерело

Можна використовувати # дія у формі дії

 <?php    
if(isset($_POST['SubmitButton'])){ //check if form was submitted
  $input = $_POST['inputText']; //get input text
  $message = "Success! You entered: ".$input;
}    
?>

<html>
<body>    
<form action="#" method="post">
<?php echo $message; ?>
  <input type="text" name="inputText"/>
  <input type="submit" name="SubmitButton"/>
</form>    
</body>
</html>
2
додано

Ви повинні використовувати код, подібний до цього:

echo "<div id='divwithform'>";

if(isset($_POST['submit'])) //if form was submitted (if you came here with form data)
{
    echo "Success";
}
else               //if form was not submitted (if you came here without form data)
{
    echo "<form> ... </form>";
} 

echo "</div>";

Код з if типовим для багатьох сторінок, однак це дуже спрощено.

Зазвичай потрібно перевірити деякі дані в першому "if" (перевірте, чи поля форми не були порожніми і т.д.).

Перейдіть на сторінку www.thenewboston.org або phpacademy.org . Є дуже хороші уроки PHP відео, включаючи форми.

1
додано

Спробуйте це ... працював для мене

<form action="submit.php" method="post">
<input type="text" name="input">
<input type="submit">
</form>

------ submit.php ------

<?php header("Location: ../index.php"); ?>
1
додано
Це оновить сторінку.
додано Автор Bogdan C, джерело

Друг. Використовуйте цей шлях, не буде "Невизначене повідомлення про змінну" і він буде працювати нормально.

<?php
    if(isset($_POST['SubmitButton'])){
        $price = $_POST["price"];
        $qty = $_POST["qty"];
        $message = $price*$qty;
    }

        ?>

    <!DOCTYPE HTML>
    <html>
    <head>
        <title></title>
    </head>
    <body>
        <form action="#" method="post">
            <input type="number" name="price"> 
<input type="number" name="qty">
<input type="submit" name="SubmitButton"> </form> <?php echo "The Answer is" .$message; ?> </body> </html>
1
додано
Ukrainian PHP comunity
Ukrainian PHP comunity
885 учасників

dev-ua/php