2016-04-26 25 views
0

私はちょうどPHPに慣れ始めました。現時点では、フォームが送信されると、確認ページにリダイレクトされ、リダイレクトされたページにユーザーが入力したデータを表示

だからここ
Thank you John Smith for submiting folowing info: 
Address: blah blah blah 
Mobile phone number: blah blah blah 
Landline phone number: blah blah blah 
Email: blah blah blah 
(where blah blah blah is data that user entered in form) 

は私のメインのコードです:

<?php 
if (isset($_POST['submit'])){ 
header("Location: form.php"); 
} 
?> 
<html> 
<head> 
    ****** 
</head> 

<body> 
<header class="main-header"> 
    *** 
</header> 

<main id="main"> 
<?php 
define('DB_NAME', '***'); 
define('DB_USER', '***'); 
define('DB_PASSWORD', '***'); 
define('DB_HOST', '***'); 

$link = mysql_connect(DB_HOST, DB_USER, DB_PASSWORD); 

if (!$link) { 
    die('Could not connect: ' . mysql_error()); 
} 

$db_selected = mysql_select_db(DB_NAME, $link); 

if (!$db_selected) { 
    die('Can\'t use ' . DB_NAME . ': ' . mysql_error()); 
} 

$forenameErr = $surnameErr = $emailErr = $sendMethodErr = ""; 
$forename = $surname = $address = $mobile = $landline = $email = $sendMethod = ""; 

if (isset($_POST['submit'])) { 
$forename = $_POST['forename']; 
$surname = $_POST['surname']; 
$address = $_POST['postalAddress']; 
$mobile = $_POST['mobileTelNo']; 
$landline = $_POST['landLineTelNo']; 
$email = $_POST['email']; 
$sendMethod = $_POST['sendMethod']; 
} 


$sql = "INSERT INTO CT_expressedInterest (forename, surname, postalAddress, mobileTelNo, landLineTelNo, email, sendMethod) 
VALUES('$forename', '$surname', '$address', '$mobile', '$landline', '$email', '$sendMethod')"; 

if (!mysql_query($sql)) { 
    die('Error: ' . mysql_error()); 
} 


mysql_close(); 
?> 
<form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?> "> 
<fieldset class="formfield"> <!--adds box around content of this element--> 
    <legend>Your Details</legend> <!--Gives title to this fieldset--> 
    <p>Fields marked with * are required for form submition.</p>  
     <label for="forename">First Name:</label> 
       <input type="text" name="forename" id="forename" placeholder = "Enter your First Name" tabindex="12" required /> 
     <label for="surname">Last Name(s):</label> 
       <input type="text" name="surname" id="surname" placeholder = "Enter your Last Name" tabindex="13" required /> 
     <label for="postalAddress">Postal Address:</label> 
       <input type="text" name="postalAddress" id="postalAddress" placeholder = "Your house number, street name and postcode"tabindex="14"/> 
     <label for="mobileTelNo">Mobile Telephone Number:</label> 
       <input type="text" name="mobileTelNo" id="mobileTelNo" placeholder = "Enter your mobile number" tabindex="19"/> 
     <label for="landLineTelNo">Landline Telephone Number:</label> 
       <input type="text" name="landLineTelNo" id="landLineTelNo" placeholder = "Enter your landline number" tabindex="19"/> 
     <label for="email">Email:</label> 
       <input type="text" name="email" id="email" placeholder = "Enter your email address" tabindex="20"/> <br/> 
     <p> How Would You Like To Recieve Further Information?</p> 
     <label id="post">Post</label>   
      <input type="radio" name="sendMethod" value="Post" tabindex="34" placeholder = "please choose one" required > 
     <label id="eemail">Email</label> 
      <input type="radio" name="sendMethod" value="Email" tabindex="35"> 
     <label id="sms">SMS Text</label> 
      <input type="radio" name="sendMethod" value="SMS" tabindex="36"> 

    <p><input type="checkbox" name="checkbox" value="check" id="agree" required /> I have read and agree to the Terms and Conditions and Privacy Policy </p> 
    <p> 
     <input type="submit" name="submit" value="Submit!" /> 
    </p> 
    </fieldset> 

    </form> 

</main> 


<footer class="main-footer"> 
    *** 
</footer> 

</body> 
</html> 

そして、ここでは私がform.phpのために、これまで持っているものですが、明らかにそれが機能していません。 (私は、同様にこのファイル内のデータベースに接続する必要がある場合はわからない)

echo "<p>Thank you $forename $surname</p>"; 
    echo "<p>We have recieved following information:</p>"; 
    echo "<p>Address: $address</p>"; 
    echo "<p>Mobile phone number: $mobile</p>"; 
    echo "<p>Landline phone number: $landline</p>"; 
    echo "<p>Email: $email </p>"; 

誰もがform.phpコードを完了するために私を助けてくださいことはできますか? そして、もう一つ。 Submitボタンを押すと、2つの新しいレコードがデータベースに追加されます。 1つは、フォームに入力された情報と1つは完全に空です。 私は助けていただければ幸いです。ありがとうございました!

p.s. jqueryやajaxのものは使用できません。このコードの

+0

確認ページに$ _POST変数を追加し、あなたは彼らが – Matt

+0

を移入見る必要があるときに '$ _POST [「提出」]'あなたがform.phpするリダイレクト存在しています。そのコマンドの下のコードは何も実行されません。しかし、あなたはまた、同じビットさらに下提出するための第2のチェックを持っています。あなたのコードがサブミット状態でその部分に到達するとは思わない。 – RST

答えて

0

いくつかのコメント... まず、あなたが使用している場合:

header("Location:form.php"); 

あなたが実際にあなたのメインのコードと同じパス上のファイル「form.php」へのナビゲーションをリダイレクトします。二つの異なる方法:

1 - 除去することにより、「form.php」にリダイレクトしないでください。

<?php 

    if (isset($_POST['submit'])){ 
     header("Location: form.php"); 
    } 

?> 

とちょうどあなたのデータが設定されているかどうかをテストして仕事をし、場所を変更しないでください。

if ( !empty($_POST['submit']) 
&&  !empty($_POST['postalAddress']) 
&&  ... 
&&  !empty($_POST['sendMethod'])) { 

     // Use data   

else { 

     // Show form 
} 

2 - あなたは実際にはなく、直接あなたのHTMLフォームでform.phpと呼ばれるファイルを使用することができますいくつかの変更で、

<form method="post" action="form.php"> 
    ... 
</form> 

だから、単に「form.php」のためにあなたのコードを取得:

<?php 

    /* You have to valide all your inputs 
    * And use empty instead of isset 
    * it tests for undifined (like isset), null value 
    * and if it's empty 
    */ 

    if ( empty($_POST['submit']) 
    ||  empty($_POST['postalAddress']) 
    ||  ... 
    ||  empty($_POST['sendMethod'])) { 

     // There is no (valid) form 
     header("Location: yourMainCode.php"); 

    else { 

     $forename = $_POST['forename']; 
     $surname = $_POST['surname']; 
     $address = $_POST['postalAddress']; 
     $mobile  = $_POST['mobileTelNo']; 
     $landline = $_POST['landLineTelNo']; 
     $email  = $_POST['email']; 
     $sendMethod = $_POST['sendMethod']; 

     // Database stuff...   

     // Redirect to a result page or something 
     header("Location:result.php"); 

    } 
?> 

希望します。

関連する問題