<?php
if ($_POST['submit']) {
mysql_connect ("localhost", "root", "swt") or die ('Error: ' . mysql_error());
mysql_select_db("db") or die ('Data error:' . mysql_error());
$text = mysql_real_escape_string($_POST['comments']);
$query="INSERT INTO greetings (msg) VALUES ('$text')";
mysql_query($query) or die ('Error updating database' . mysql_error());
$id= mysql_insert_id();
$url = "preview.php?id=".$id;
}
?>
<form method="post" action="<? echo $url ?>" enctype="multipart/form-data" >
<textarea name="comments" placeholder="please input your message"></textarea>
<input name="submit" type="submit" value="submit" />
</form>
привет, извините, новичок в PHP. я хочу спросить, почему, когда я отправляю его, он должен занять 2 раза, прежде чем перейти к preview.php
Благодарю.
В первый раз $url
пуст, поэтому браузер запрашивает одну и ту же страницу, затем URL-адрес изменяется, затем вводится в форму, чтобы следующая почта перенаправляла ваш файл preview.php.
Просто отправил заголовок для перенаправления.
header("Location: /preview.php?id=".$id);
так это будет:
<?php
if ($_POST['submit']) {
mysql_connect ("localhost", "root", "swt") or die ('Error: ' . mysql_error());
mysql_select_db("db") or die ('Data error:' . mysql_error());
$text = mysql_real_escape_string($_POST['comments']);
$query="INSERT INTO greetings (msg) VALUES ('$text')";
mysql_query($query) or die ('Error updating database' . mysql_error());
$id= mysql_insert_id();
$url = "preview.php?id=".$id;
header("Location: $url");
}
?>
<form method="post" enctype="multipart/form-data" >
<textarea name="comments" placeholder="please input your message"></textarea>
<input name="submit" type="submit" value="submit" />
</form>
Не используйте действие, когда вы хотите отправить запрос на ту же страницу.
(Я предполагаю, что часть php в вашем фрагменте - это тот же файл)
Также для отправки перенаправления вам не нужно выводить html перед отправкой заголовка
Ваше значение действия формы ($ url) создается после отправки первого сообщения, что означает, что он пуст при первом отправке клика. Лучшее решение состоит в том, чтобы сохранить значение действия пустым, а в пост-логике вместо этого нужно построить значение $ url, которое вы можете перенаправить пользователя в $ url:
...
$id= mysql_insert_id();
$url = "preview.php?id=".$id;
header('Location: '.$url);
}
Измените <?= $url?> to <?php echo $ url;?>.
На вашем сервере нет short_open_tags.
Первое изменение <?
to <?php
like..
<form method="post" action="<?php echo $url ?>" enctype="multipart/form-data" >
<textarea name="comments" placeholder="please input your message"></textarea>
<input name="submit" type="submit" value="submit" />
Мне это нравится..
Во-вторых, откройте firebug, нажмите кнопку и посмотрите, какая ошибка вы получаете. Существует вероятность того, что у вас может быть некоторая ошибка на странице, или проверьте, инициирован ли ваш запрос или нет при первом нажатии. Также проверьте, не является ли $url
пустым, при первом нажатии.