2013-06-27 16 views
20

Mam formularza php, który znajduje się na contact.htmlformularz php - na przedstawienia pobyt na tej samej stronie

Formularz jest przetwarzany z processForm.php

Gdy użytkownik wypełnia formularz i kliknie przesłać, procesForm.php wysyła wiadomość e-mail i kieruje użytkownika do - processForm.php z komunikatem na tej stronie "Sukces! Twoja wiadomość została wysłana."

nie wiem zbyt wiele o php, ale wiem, że akcja, która wzywa do tego jest:

// Die with a success message 
die("<span class='success'>Success! Your message has been sent.</span>"); 

Moje pytanie brzmi, jak mogę zachować wiadomość wewnątrz div formie bez przekierowanie do strona processForm.php?

Mogę opublikować cały processForm.php w razie potrzeby, ale jest długi.

Dzięki

+5

ajax lub dodaj do tej samej strony. Wolę publikować na tej samej stronie. –

+0

'header (" contact.html? Result = success ");' – BlitZ

+0

http://www.phptutorialforbeginners.com/2013/01/jquery-ajax-tutorial-and-example-of.html – underscore

Odpowiedz

11

Istnieją dwa sposoby na zrobienie go:

  1. składając formularz na tej samej stronie. (Można to zrobić, ustawiając działanie formularza na ten sam adres URL), w którym to przypadku należy obsłużyć przesłany formularz za pomocą skryptu PHP.
if(isset($_POST['submit'])) 
{ 
    // Enter the Code you want to execute after the form has been submitted 

    // Dispaly Success or failure Message if any 
} 
else    
{ 
    // Display the Form and the Submit Button 
} 

2.Using AJAX Formularz wniosku, że jest to trochę trudniejsze, że pierwsza metoda dla początkujących.

+0

Tak, to działa, przynajmniej częściowo. Nie pozostajesz w tej samej grupie wiekowej - ponieważ wynik jest wyświetlany na nowej stronie - ale jest znacznie lepszy, ponieważ * masz *, aby powrócić na pierwszą stronę, unikając w ten sposób tworzenia kopii tego samego PHP w historii przeglądarki. – Apostolos

1

Musisz użyć kodu podobnego do tego:

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>"; 

kod z if jak to jest typowe dla wielu stron, jednak jest to bardzo uproszczone.

Zazwyczaj trzeba najpierw sprawdzić niektóre dane "jeśli" (sprawdzić, czy pola formularza nie były puste itp.).

Odwiedź stronę internetową www.thenewboston.org lub phpacademy.org. Istnieją bardzo dobre tutoriale wideo w formacie PHP, w tym formularze.

12

Najlepszym sposobem na pozostanie na tej samej stronie jest publikowanie na tej samej stronie.

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

Należy zauważyć, że ta metoda nie przechodzi testu sprawdzania poprawności HTML w [W3 Validator] (http://validator.w3.org), jak to mówi "** Zła wartość dla działania atrybutu w postaci elementu: Musi być non -empty. ** "Chociaż to na pewno działa, HTML drukuje w ten sposób, co powoduje błąd:'

' –

+0

Istnieje przykład kodu tego w http://www.html-form-guide.com/php-form/php-form-action-self.html – Mawg

+0

Jest to oczywiście zrozumiałe i nic nie zmienia, ponieważ tak samo jest z action = "" , o czym już wspomniano powyżej. – Apostolos

17

Aby utrzymać się na tej samej stronie, na przedstawienia można zostawić akcję pusty (action="") do tagu formularza lub pozostawić go w ogóle.

Aby utworzyć wiadomość, utwórz zmienną ($message = "Success! You entered: ".$input;"), a następnie wypowiedz zmienną w miejscu strony, na której chcesz, aby komunikat pojawił się z <?php echo $message; ?>.

Jak to:

<?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> 
+0

Czy sprawdziłeś kod? 1) W pierwszym uruchomieniu, przed przesłaniem, otrzymasz komunikat "Niezdefiniowana zmienna" (oczywiście!) 2) Następnie przy każdym zgłoszeniu zostanie załadowany nowy formularz wyświetlający wiadomość i wszystkie są zapisane w historii przeglądarki! Dlaczego ludzie nie sprawdzają kodów przed ich opublikowaniem ??? – Apostolos

1

Można użyć # działań w formie akcji

<?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> 
1

Spróbuj tego ...pracował dla mnie

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

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

<?php header("Location: ../index.php"); ?> 
+0

Spowoduje to odświeżenie strony. –

0

znajomego. Użyj w ten sposób, Nie będzie "Niezdefiniowanej zmiennej wiadomości" i będzie działać dobrze.

<?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"> <br> 
      <input type="number" name="qty"><br> 
      <input type="submit" name="SubmitButton"> 
     </form> 
     <?php echo "The Answer is" .$message; ?> 

    </body> 
    </html> 
Powiązane problemy