Это код моей домашней странице:Обновление таблицы со значениями из формы на той же странице
<html>
<head>
<title>PHP test</title>
<link href="style.css" rel="stylesheet" type="text/css">
</head>
<body>
<div id="formDiv">
<form action="testsql.php" method="post">
Email: <input type="text" name="email"><br>
<textarea name="comment" rows="10" cols="40">Your comment here.</textarea>
<input type="submit" value="submit">
</form>
<div id="show">
<?php
$con=mysqli_connect("","root","","my_db");
// Check connection
if (mysqli_connect_errno())
{
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
$result = mysqli_query($con,"SELECT * FROM Comments");
echo "<table border='1'>
<tr>
<th>Email</th>
<th>Comment</th>
</tr>";
while($row = mysqli_fetch_array($result))
{
echo "<tr>";
echo "<td>" . $row['Email'] . "</td>";
echo "<td>" . $row['comment'] . "</td>";
echo "</tr>";
}
echo "</table>";
mysqli_close($con);
?>
</div>
</div>
</body>
</html>
и вот код файла testsql.php:
<?php
$con=mysqli_connect("","root","","my_db");
if($_SERVER["REQUEST_METHOD"] == "POST")
{
header("Location: testphp.php");
if(empty($_POST["comment"]))
{echo "You have to write something. <br>";}
else
{
if (mysqli_connect_errno())
{
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
if(empty($_POST["email"]))
{
$sql="INSERT INTO Comments (Email, comment)
VALUES
('$_POST[email]', '$_POST[comment]')";
echo "1 record added.";
if (!mysqli_query($con,$sql))
{
die('Error: ' . mysqli_error($con));
}
}
else{
if (!preg_match("/([\w\-]+\@[\w\-]+\.[\w\-]+)/",$_POST["email"]))
{
echo "Invalid email format <br>";
}
else{
echo "Your email is: {$_POST["email"]} <br>";
$sql="INSERT INTO Comments (Email, comment)
VALUES
('$_POST[email]', '$_POST[comment]')";
echo "1 record added.";
if (!mysqli_query($con,$sql))
{
die('Error: ' . mysqli_error($con));
}
}
}
}
}
?>
Я хочу сделать, это взять значения из формы и поместить их в таблицу. Таблицу следует обновить после нажатия кнопки «Отправить». Он работает, когда у меня есть header(Location: "testphp.php");
, но тогда он не будет отображать сообщения об ошибках, если пользователь неправильно пишет почту или не пишет комментарий.
Когда я не включать заголовок код работает правильно, но я попадаю на testsql.php, и я должен вернуться к testphp.php увидеть обновленную таблицу. Я знаю, что я могу использовать javascript, но наш профессор сказал нам, что сайт должен быть полностью полезен при отключенном javascript. Есть идеи?
Вы используете свой заголовок ("Location: testphp.php"); 'преждевременно. Конечно, если запрос «POST», он выполнил свою работу. Вам нужно поместить 'header (" Location: testphp.php ");" после "он успешно запросил вашу БД. –
Я попытался поместить заголовок после получения значений, но получаю предупреждение этого типа. Предупреждение: невозможно изменить информацию заголовка - заголовки, уже отправленные (вывод запущен в /some/file.php:12) в /some/file.php в строке 23 – captain
Используете ли вы сеансы случайно? –