2016-04-26 3 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 код? И еще одна вещь. После нажатия кнопки «Отправить» в мою базу данных добавляются две новые записи. Один с информацией, которая была введена в нее, и одна полностью пуста. Буду признателен за любую помощь. Спасибо!

p.s. Мне не разрешено использовать любые jquery или ajax вещи.

+0

добавить переменные $ _POST на страницу подтверждения, и вы увидите, что они заполняют – Matt

+0

, когда '$ _POST ['submit']' присутствует, вы перенаправляете на form.php. Ничто из кода ниже этой команды не будет исполнено. Но у вас также есть вторая проверка на то же самое, подавайте немного дальше. Я не думаю, что ваш код когда-либо достигнет этой части в состоянии подачи. – 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 - Вы можете использовать файл с именем form.php, но непосредственно с HTML-форм:

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

    } 
?> 

Надеюсь, это поможет!

Смежные вопросы