2013-06-27 5 views
20

に私は、ユーザーがフォームに記入し、上をクリックすると、フォームがprocessForm.phpPHPフォーム - 同じページに滞在を提出

から加工されcontact.html

上に配置されているPHPのフォームを持っています processForm.phpが電子メールを送信して、ユーザーに「processForm.php 」とメッセージを送り、そのページに「成功!メッセージが送信されました」というメッセージが表示されます。

私は、PHPについて多くを知らないが、私はこれを要求しているアクションがあることを知っている:

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

私の質問は、私はにリダイレクトせずにフォームのdivの内側にメッセージを保つことができるか、です processForm.phpページ?

必要に応じてprocessForm.php全体を投稿できますが、それは長いです。

おかげ

+5

ajaxまたは同じページに投稿してください。私は同じページに投稿することを好む。 –

+0

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

+0

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

答えて

11

それを行うための2つの方法があります。

  1. 同じページにフォームを送信することでは。 (これは、フォームアクションを同じURLに設定することによって行うことができます)。その場合は、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フォーム送信。しかし、これは非常に単純化され、これは多くのページのための典型的なものであるようなif

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

コード:

+0

はい、これは少なくとも部分的に機能します。結果は新しいページに表示されるため、同じページに表示されますが、最初のページに戻って同じPHPのコピーを作成しなくて済むので、はるかに優れていますブラウザの歴史の中で。 – Apostolos

1

あなたは、このようなコードを使用する必要があります。

通常、最初の "if"(フォームフィールドが空でないかどうかなど)で一部のデータを検証する必要があります。

www.thenewboston.orgまたはphpacademy.orgにアクセスしてください。フォームを含む非常に良いPHPビデオチュートリアルがあります。

12

同じページに滞在する最善の方法は、同じページに投稿することです。フォームタグに(action="")空のアクションを残すか、完全にそれを残すことができ提出に同じページにとどまるためには

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

このメソッドは、 "[W3 Validator](http://validator.w3.org)のHTML検証チェックに合格しません。" **要素フォームの属性アクションの値が不正です: -empty。** "間違いなく動作しますが、HTMLは次のように表示され、エラーが発生します:'

+0

http://www.html-form-guide.com/php-form/php-form-action-self.html – Mawg

+0

これはもちろん理解されていますが、action = ""これは既に上述した通りである。 – Apostolos

17

メッセージの場合は、変数($message = "Success! You entered: ".$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> 
+0

コードをチェックしましたか? 1)最初に実行すると、送信前に "未定義の変数メッセージ"が表示されます。 2)その後、新しいフォームがロードされ、メッセージが表示され、ブラウザの履歴にすべて組み込まれます。 あなたのコードを投稿する前に、あなたのコードをチェックしてみませんか? – Apostolos

1

あなたはフォームアクション

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

で#アクションを使用することができますが、これを試してみてください...私

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

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

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

これでページが更新されます。 –

0

フレンドのために働きました。この方法を使用すると、「未定義の変数メッセージ」がなくなり、正常に動作します。

<?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> 
関連する問題