2013-05-21 4 views
0

Привет Я пытаюсь перенаправить на следующую страницу после того, как данные переданы mysql. У меня до сих порЗаголовок формы: порядок порядка расположения

<?php 
$name = ""; 
$email = ""; 
$msg_to_user = ""; 
if ($_POST['name'] != "") { 
    include_once "newsletter/connect_to_mysql.php"; 

    // Be sure to filter this data to deter SQL injection, filter before querying database 
    $name = $_POST['name']; 
    $email = $_POST['email']; 

    $sql = mysql_query("SELECT * FROM newsletter WHERE email='$email'"); 
    $numRows = mysql_num_rows($sql); 

    if (!$email) { 
     $msg_to_user = '<br /><br /><span style="font color="FF0000">Please type an email address ' . $name . '.</span>'; 

    } else if ($numRows > 0) { 
     $msg_to_user = '<br /><br /><font color="FF0000">' . $email . ' is already in the system.</font>'; 

    } else {  
     $sql_insert = mysql_query("INSERT INTO newsletter (name, email, dateTime) 
     VALUES('$name','$email',now())") or die (mysql_error()); 
     $msg_to_user = '<br /><br /><div style="color=#F47926;">Thanks ' . $name . ', Now lets select what you need.</div>'; 
     $name = ""; 
     $email = ""; 
    } 
    header("Location: order.php"); 
} 
?> 

Это посылает данные в свою базу данных и все прекрасно работает, но я хотел бы, чтобы отправить его на другую страницу в order.php Thats уже созданы, чтобы продолжить. Форма, которую я получил прямо сейчас, находится здесь

<form style="border:0;padding-left:10px;" action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post"> 
    <fieldset style="text-align:left;" id="free"> 
    <span style="text-align:left;font-size:30px;color:#F47926;"> 
    Ready to get started? 
    </span> 
    <div class="centerForm"> 
    Name:<br /> 
    <input name="name" type="text" maxlength="36" size="35" value="" /><br /> 
    Email:<br /> 
    <input name="email" type="text" maxlength="36" size="35" value="" /><br /> 
    <br /><br /><div style="width:179px;margin-left:auto;margin-right:auto;"><input type="image" src="continue-to-selection.png" name="mySubmitBtn" alt="continue to selection" /></div>       
    </fieldset> 
</form> 

Функция электронной почты работала раньше, но она перестала работать, когда я начал изменения. Я уверен, что это что-то простое, и я уверен, что смогу это исправить. Моя проблема в том, что я пытаюсь перенаправить после отправки данных в mysql, пользователь на страницу order.php. Являются ли изменения, которые мне нужно сделать, чтобы быть в форме или через заголовок: местоположение, которое я пытаюсь использовать. Спасибо Примечание: Я укоротил URL-адреса, чтобы просмотреть их в предварительном просмотре, поэтому я знаю, что order.php должен быть полным путем. Исправьте меня, если я ошибаюсь, но просто позволяю всем вам знать, что я знаю, и это не проблема.

+0

Вы никогда не отправляете сообщение. Затем вы перенаправляетесь на заказ. Ожидаете ли вы, что вы будете поддерживать переменные, установленные на первой странице? Вы заглянули в $ _SESSION для хранения временных значений? –

+0

Привет, Кай, я еще не начал эту часть. Моя единственная проблема сейчас - добраться до страницы order.php после отправки mysql имени и электронной почты. Вне этого я могу обойтись без какого-либо ect сообщения. –

ответ

0

есть 2 утверждения, которые я бы предложил вам попробовать. 1-й (лично предпочтительный) - использовать ajax и jquery для отправки формы, а затем отображать сообщение благодарности без обновления страницы. После этого используйте функцию settimeout для задержки перенаправления на х секунд, а затем перенаправление на страницу заказа.

2nd approche: после того, как данные будут сохранены в хранилище базы данных, сообщение об успехе в сеансе. то в заголовке страницы заказа используйте оператор if, основанный на сеансе. если это успех или правда, тогда покажите сообщение сообщение благодарности на странице заказа.

Если вы хотите увидеть пример предоставленных решений, дайте мне знать.

благодаря

0

Вот хорошее правило - избегать вторя HTML с PHP. Закройте тег скрипта, напишите свой HTML и продолжите свой PHP

Также @vidit прав. попробовать этот

else {  
     $sql_insert = mysql_query("INSERT INTO newsletter (name, email, dateTime) 
     VALUES('$name','$email',now())") or die (mysql_error()); 
     $msg_to_user = '<br /><br /><div style="color=#F47926;">Thanks ' . $name . ', Now 
     lets select what you need.</div>'; 
     //$name = ""; 
     //$email = ""; 
     session_start(); 
     $_SESSION['name'] = $name; 
     $_SESSION['email']=$email; 
    } 

и в следующем файле вы можете получить адрес электронной почты и имя обратно, используя

session_start(); 
$email = $_SESSION['email']; 
$name= $_SESSION['name']; 

Также смотрите в PDO в качестве альтернативы, если вы используете PHP> 5,1

также , не помешало бы добавить сеансовую обработку, которую вы можете узнать здесь

Приветствия!

+0

Теперь я полностью смущен ... У меня все еще есть одна проблема с получением order.php, как только я отправил форму. Ваш ответ о передаче сообщения на следующую страницу? сессия. Позволяет устранить любое сообщение, чтобы я мог восстановить понимание. Я просто хочу, чтобы данные были сохранены, а затем доставлены в order.php. Я думаю, что это моя главная проблема. Я думаю, что смогу вырваться из-за этого, но добраться до этого order.php является проблемой. –

+0

@HireLogo: Не перенаправляется ли страница вообще или она бросает какую-то ошибку? Также попробуйте удалить часть кода ** или die() ** и повторить вывод, чтобы увидеть, выполняется ли запрос с некоторой ошибкой. Иногда вставка будет, но будет, тем не менее, ошибка. ** EDIT ** Кроме того, вы можете попробовать использовать PDO, который имеет свой собственный механизм обработки ошибок. Это плюс, что вы можете доверять ему, чтобы быть безопасным для SQL-инъекций по большей части. – Hanut

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