2017-11-09 1 views
-1

私は複数ページのフォームを持っていて、データベース内の最後のフォームページの[送信]ボタンをクリックした後に、すべてのフォームの挿入をセッションに保存したいと思います。セッション変数を2ページ以上に渡って保存する方法は?

質問1: すべてのフォーム変数をこのようなセッション変数に保存していますか? この例のように、現在のページの最後のページから変数を保存する必要がありますか?これが機能するのでしょうか、それとももっと簡単に保管することができますか?

のPage1:

<?php 
session_start(); 
?> 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
<title>form1</title> 
</head> 
<body> 
<form method="post" action="form2.php"> 
    <p><input type="text" name="sname"> Name</p> 
    <p><input type="text" name="semail_address"> Email</p> 
    <p><input type="submit" value="form 2"></p> 
</form> 
</body> 
</html> 

ページ2:

session_start(); 

$_SESSION['name'] = $_POST['sname']; 
$_SESSION['email_address'] = $_POST['semail_address']; 
?> 
<form method="post" action="form3.php"> 
    <p><input type="radio" value="Free" checked="checked"name="smembership_type">Free</p> 
    <p><input type="radio" name="smembership_type" value="Normal">Normal</p> 
    <p><input type="radio" name="smembership_type" value="Deluxe">Deluxe</p> 
    <p><input type="checkbox" name="sterms_and_conditions">I agreee</p> 
    <input type="submit" value="Form 3"></p> 
</form> 
</body> 
</html> 

ページ3:

<?php 
session_start(); 
$_SESSION['membership_type'] = $_POST['smembership_type']; 
$_SESSION['terms_and_conditions'] = $_POST['sterms_and_conditions']; 
?> 

....

質問2: そして、それらをデータベースに保存するにはどうすればよいですか?構文は正しいですか?

$query = "INSERT into subscriptions(name,email_address,membership_type,terms_and_conditions,name_on_card, credit_card_number, credit_card_expiration_date)". 
    "VALUES(" . $_SESSION['name'] . ", 
      " . $_SESSION['email_address'] . ", 
      " . $_SESSION['membership_type'] . ", 
      " . $_SESSION['terms_and_conditions'] . ", 
      " . $_SESSION['name_on_card'] . ", 
      " . $_SESSION['credit_card_number'] . ", 
      " . $_SESSION['credit_card_expiration_date'] . ")"; 

答えて

-2

あなたは、次のページの読み込みに関する決定を行うことができるように、はい、その後、検証のためにサーバーや他のビジネス・ロジックに情報を送信する送信ボタンを使用している場合。

そうでない場合は、なぜ送信を使用しますか?このフォームは、ページ2の& 3が隠しdivブロックにフォームを持っているときに、ユーザーのために表示されるdivに非常によく入れることができます。送信ボタンの代わりに、ラベル "次へ"をクリックすると、現在のdivを非表示にしてdiv(現在2ページ目)などを表示することができます。

このようにして、サーバーへの複数回のトリップやセッション中の多くの変数の管理という頭痛を避けることができます。最初のフォームデータに基づいて決定を行い、その決定がサーバー側でしか処理できない場合は、これが最善の方法です。

-1

いいえセッション uは現在のページフォームデータで各ページのデータベースを更新できます。現在のページフォームデータでデータベースを更新し、次のページに成功を渡すことを意味します。ポストメソッド

2

あなたがしたことは正しいです。私たちはこのようなセッションを使用することができます。しかし、このようにするのは良い習慣ではありません。同じページにフォームを作成してください。ページの最初のページを表示して他のページを非表示にします(表示なし)。最初のサブミットボタンの代わりに、通常のボタンを使用して、ボタンクリック時に2番目のフォームを表示するためにjqueryをクリックします。このコードを実行します。

 <html xmlns="http://www.w3.org/1999/xhtml"> 
     <head> 
     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
     <title>form1</title> 
     <style> 
     #secondForm{ 
      display:none; 
     } 
     </style> 
<script 
    src="https://code.jquery.com/jquery-3.2.1.min.js" 
    integrity="sha256-hwg4gsxgFZhOsEEamdOYGBf13FyQuiTwlAQgxVSNgt4=" 
    crossorigin="anonymous"></script>  
     <script> 
     function display(formName){ 
      if(formName=='first'){ 
       $('#firstForm').css("display","block"); 
       $('#secondForm').css("display","none"); 
      }else{ 
       $('#firstForm').css("display","none"); 
       $('#secondForm').css("display","block");     
      } 
     } 
     </script> 
     </head> 
     <body> 
     <form method="post" action=""> 
      <div id="firstForm"> 
      <p><input type="text" name="sname"> Name</p> 
      <p><input type="text" name="semail_address"> Email</p> 
      <p><input type="button" value="Next" onclick="display('second')"></p> 
    </div> 
      <div id="secondForm"> 
      <p><input type="text" name="sname"> Name</p> 
      <p><input type="text" name="semail_address"> Email</p> 
      <p><input type="button" value="Previous" onclick="display('first')"></p> 
      <p><input type="submit" value="Save"></p> 
    </div> 
     </form> 
     <?php 
     if($_POST){ 
      //save code sql 
     } 
     ?> 
     </body> 
     </html> 
関連する問題