2016-04-26 10 views
0

Ich begann gerade, mich mit PHP vertraut zu machen, und was ich im Moment versuche, ist, wenn das Formular abgeschickt wird, Sie werden zur Bestätigungsseite weitergeleitet, wo Sie die folgende Nachricht sehen:Angezeigte Benutzerdaten auf der umgeleiteten Seite anzeigen

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) 

so, hier ist mein Haupt-Code:

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

Und hier ist das, was ich bisher für form.php haben, aber offensichtlich ist es nicht funktioniert. (ich bin nicht sicher, ob ich auch in dieser Datei Datenbank verbinden müssen)

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

Kann jemand bitte helfen Sie mir form.php Code zu beenden? Und noch etwas. Nachdem ich den Submit Button gedrückt habe, werden zwei neue Datensätze zu meiner Datenbank hinzugefügt. Eins mit Info, dass es das Formular eingegeben wurde und man ist komplett leer. Ich würde jede Hilfe zu schätzen wissen. Vielen Dank!

p.s. Ich darf keine Jquery- oder Ajax-Sachen verwenden.

+0

fügen Sie die $ _POST-Variablen zur Bestätigungsseite hinzu und Sie sollten sehen, dass sie – Matt

+0

ausfüllen, wenn '$ _POST ['submit']' vorhanden ist, leiten Sie in form.php um. Nichts vom Code unterhalb dieses Befehls wird ausgeführt. Aber Sie haben auch einen zweiten Check für das gleiche ein wenig weiter unten. Ich denke nicht, dass Ihr Code diesen Teil jemals im Submit-Status erreichen wird. – RST

Antwort

0

Ein paar Kommentare zu diesem Code ... Erstens, wenn Sie verwenden:

header("Location:form.php"); 

Sie leiten tatsächlich die Navigation in die Datei „form.php“ auf dem gleichen Weg als Ihren Hauptcode. Zwei unterschiedliche Art und Weise:

1 - nicht weitergeleitet zu „form.php“ durch Entfernen:

<?php 

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

?> 

und einfach testen, ob Ihre Daten festgelegt sind und die Arbeit macht, nicht den Standort wechseln.

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

     // Use data   

else { 

     // Show form 
} 

2 - Sie können tatsächlich eine Datei namens verwenden form.php, sondern direkt mit dem HTML-Formular:

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

Und so, nur um den Code für "form.php", mit einigen Änderungen :

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

    } 
?> 

Hoffe es hilft!

Verwandte Themen