0

あるページにフォームがあり、そのページの送信ボタンを押すと、ユーザーはフォームの次のページに移動します。フォーム2の送信ボタンをクリックしてすべてのフォームに記入したときに、フォーム1の情報がフォーム2の情報とともに送信されるように設定しようとしていますが、最初のフォームのデータが私のフォーム 2 に進むときのデータベース。これが当てはまる理由は何ですか? そして、解決策のアイデアはありますか?

また、最初のフォームから「undefined index GET」というエラーが表示されますが、その理由を理解するのに苦労していますか?

前もって感謝します!

フォーム 1 (parent.php)

<?php session_start(); 
$_SESSION['fName']=$GET['fName'];
$_SESSION['sName']=$GET['sName'];
$_SESSION['email']=$GET['email'];
$_SESSION['address']=$GET['address'];


?>


<!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Transitional//EN”     “http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd”&gt;
<html xmlns=”http://www.w3.org/1999/xhtml”&gt;
<head>
<meta http-equiv=”Content-Type” content=”text/html; charset=iso-8859-1″ />
<title>table2</title>
</head>
<h1>Is this in xamppfiles and htdocs?</h1>




<form action="child2.php" method="post" class="validate">
<div>
<input class="tb" type="text" name="fName" placeholder="first name" id="fName" value=" <?php $fName ?>" required/><br/>
 <br/>
  <input class="tb" type="text" name="sName" placeholder="surname" id="sName" value="<?php $sName ?>" required/><br/>
  <br/>
  <input class="tb" type="email" name="email" required placeholder="email address" id="email" value="<?php $email ?>" required/>
  <br/>
  <input class="tb" type="address" name="address" placeholder="address" value="<?php $address ?>" id="address" />
  <br/>


  <input id="submit" name="submit" type="submit" value="Next">
  </div>
  </form> 




</body>
</html>

フォーム 2 (child2.php)

 <?php
  session_start();
  include("connect.php");
 ?>
<!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Transitional//EN”   “http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd”&gt;
<html xmlns=”http://www.w3.org/1999/xhtml”&gt;
<head>
<meta http-equiv=”Content-Type” content=”text/html; charset=iso-8859-1″ />

<title>table2</title>
</head>

<body>


 <?php
function renderForm($fName, $sName, $email, $address){ 
?>



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

<label class="label">first name</label><input class="tb" type="text" id="fName"     name="fName" value="<?php if (isset($fName)) { echo $fName = $_SESSION['fName'];} else {    if(!isset($fName)) { echo ""; }}?>"/> 
</br>
<label class="label">surname</label><input class="tb" type="text" id="sName"  name="sName" value="<?php if (isset($sName)) { echo $sName = $_SESSION['sName'];} else {  if(!isset($sName)) { echo ""; }}?>"/>
</br>
<label class="label">email</label><input class="tb" type="email" id="email"  name="email" value="<?php if (isset($email)) { echo $email = $_SESSION['email'];} else { if(!isset($email)) { echo ""; }}?>""/>
</br>
<label class="label">address</label><input class="tb" type="text" id="address"  name="address" value="<?php if (isset($address)) { echo $address = $_SESSION['address'];}    else { if(!isset($address)) { echo ""; }}?>""/>
</br>

<input id="submit" type="submit" value="Submit"/>
</form>

<?php
}


// check if the form has been submitted. If it has, start to process the form and save it to the database
  if (isset($_POST['submit']))
 { 
 // get form data, making sure it is valid
 $fName = mysql_real_escape_string(htmlspecialchars($_POST['fName']));
 $sName = mysql_real_escape_string(htmlspecialchars($_POST['sName']));
 $email = mysql_real_escape_string(htmlspecialchars($_POST['email']));
 $address = mysql_real_escape_string(htmlspecialchars($_POST['address']));

 // check to make sure both fields are entered
 if ($fName == '' || $sName == '' || $email == '')
 {
 // generate error message
 $error = 'ERROR: Please fill in all required fields!';

 // if either field is blank, display the form again
 renderForm($fName, $sName, $email, $address, $error);
 }
 else
 {
 // save the data to the database
 mysql_query("INSERT formtest SET fName='$fName', sName='$sName',email='$email', address='$address'")
 or die(mysql_error()); 

 // once saved, redirect back to the view page
 header("Location: child2.php"); 
 }
 }
 else
 // if the form hasn't been submitted, display the form
 {
 renderForm('','','','','');
 }

?>

</body>
</html>
4

1 に答える 1

2

parent.php のアクション フィールドは child2.php です。また、チェックしている

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

これは最初のページで true に設定されているため、ループ内に入り、データベースにデータを挿入します。これは、これを親ファイルに配置することで解決できます

  <input id="submit" name="submitINIT" type="submit" value="Next">

考えられる解決策は、最初のフォームの値を抽出していくつかのセッション変数に保存し、最終的な送信時にそれらの値を挿入に使用できることです。

あなたのchild2.phpで、これを行います

 if (isset($_POST['submitINIT'])){
   // store all the available values in some session variables
$_SESSION['value1']=$POST['fName'];
$_SESSION['value2']=$POST['sName'];
$_SESSION['value3']=$POST['email'];
$_SESSION['value4']=$POST['address'];
}

 if (isset($_POST['submit'])){
   // proceed after final submission
}

また、これを使用して2番目のファイルのアクションをそれ自体に変更します

<form action="child2.php" method="post" class="validate">

また、child2.phpでこの変更を行います

<input id="submit" name="submit" type="submit" value="Submit"/>
于 2012-08-26T14:50:56.460 に答える