0
0

Помогите понять что я сделал не так!!! При обновлении страниц повторно отправляются данные в базу данных

<?php


$mysqli = new mysqli('localhost', 'root', '', 'kinomonster');
if (mysqli_connect_errno()) {
prinf("Соединение не установлено", mysqli_connect_error());
exit();
}
$mysqli->set_charset('utf8');

$name = $_POST['name'];
$author_name = $_POST['author_name'];

/*вставка данных в БД*/
if (isset($_POST['send'])){
$query = "INSERT INTO music VALUES(null, '$name', '$author_name')";
$mysqli->query($query);

}

/*вывод данных из БД*/
$query = $mysqli->query('SELECT * FROM music');
while ( $row = mysqli_fetch_assoc($query)) {
echo $row['name']." - ".$row['author']."<br>";
}

$mysqli->close();


?>

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Music</title>
</head>
<body>
<div>
<form action="/music.php" method="post">
<input type="text" name="name" placeholder="название композиции">
<input type="text" name="author_name" placeholder="имя автора">
<input type="submit" name="send" value="отправить">
</form>
</div>

</body>
</html>


Ghennadi Aricov
4 years ago






Поменяйте местами Вывод из БД и Вставку в БД, тогда не будет повторяться

Ангелина Зимакова
4 years ago

Поменяйте местами Вывод из БД и Вставку в БД, тогда не будет повторяться

Ангелина Зимакова
4 years ago

Я включила проверку пустых данных формы и обнулила предыдущие данные, если форма пуста. Вот часть кода:

echo "Записи в таблице music:";
$query = $mysqli->query('SELECT `name`, `author` FROM music');
while ( $row = mysqli_fetch_assoc($query)) {
echo $row["name"].", ".$row["author"]."<br>";
}

switch ($nameFilter) {
case '':
echo "<br>"."Не задано название композиции"."<br><br>";
$_POST["name"] = null;
$_POST["author"] = null;
// Исключаем повторное занесение записи (значения остаются и при следующем "пустом" запуске программы может быть повторно использовано)

break;

default:

switch ($authorFilter) {
case '':
echo "<br>"."Не задано имя автора"."<br><br>";
$_POST["name"] = null;
$_POST["author"] = null;

break;

default:
// Вставляем новую запись в таблицу music: сначала сформируем запрос, затем внесём изменения в БД
$query = "INSERT INTO music VALUES(null, '$nameFilter', '$authorFilter')";
$mysqli->query($query);
echo "<br>"."Информация занесена в базу данных: ".$nameFilter.", ".$authorFilter."<br><br>";
break;
break;
}
}

}

// Закрываем соединение с базой данных
$mysqli->close();

Рузанова Ольга
1 year ago

Не совсем понятно в чем проблема.

Данные должны отправляться с формы в базу при нажатии на кнопку Отправить. Как-то по-другому работает?

Yuri Smirnov
4 years ago

Все верно, данные отправляются. Однако, если после отправки данных обновить страницу, то повторно записываются последние введенные данные. И, если нажать "отправить" в БД записывается пустое значение. Как это предотвратить? Хотя бы повторную запись данных после обновления страницы?!

Ghennadi Aricov
4 years ago

5 ответов