Как решить эти проблемы?
Приступил к практике из 57 урока и столкнулся с парочкой проблем. Первая - когда добавляю значение в таблицу, и например замечаю что оно неправильно написано, хочу его исправить и удаляю из таблицы, но при обновлении файла в браузере он никуда не пропадает, а наоборот возвращается в таблицу, но если добавить другое значение, старое удалится, а проблема останется. Вторая - если добавить значение(например песню и группу) и вывести на страницу, то оно выведется, но если начать обновлять страницу несколько раз, то добавится несколько значений. Как это исправить?
Вот сам код :
<?php
$mysqli = new mysqli('localhost', 'root', '', 'kinomonster');
if (mysqli_connect_errno()) {
printf("Соединение не установлено", mysqli_connect_error());
exit();
}
$mysqli->set_charset('utf8');
$query = $mysqli->query('SELECT * FROM music');
while ($row = mysqli_fetch_assoc($query)) {
echo $row['name'].$row['author']."<br>";
}
$name = "";
$author = "";
if(isset($_GET['name']) && isset($_GET['author'])) {
$nameFilter = htmlspecialchars($_GET ['name'], ENT_QUOTES, 'UTF-8');
$authorFilter = htmlspecialchars($_GET ['author'], ENT_QUOTES, 'UTF-8');
echo $name = $nameFilter;
echo $author = $authorFilter;
}
$query = "INSERT INTO music VALUES(null, '$name', '$author')";
$mysqli->query($query);
$mysqli->close();
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Traks</title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<form action="/player.php" method="get">
<input type="text" name="name" placeholder="Введите пожалуйста трек и группу этого трека">
<input type="text" name="author" placeholder="Введите пожалуйста название группы">
<input type="submit" value="Отправить">
</form>
</body>
</html>
5 ответов
Нужно проверку ставить, если post данные приходят, только тогда выполнять insert:
$query = "INSERT INTO music VALUES(null, '$name', '$author')";
в похожих вопросах есть же готовый код, там можно посмотреть эту проверку и реализацию:
https://fructcode.com/ru/qa/php-mysql-domasnee-zadanie-57-uroka-tgukud/
Я ссылку выше приводил с примером кода, вот от туда проверка:
/* Проверяем, существуют ли переменные $_POST и если существуют, тогда обрабатываем данные POST от пользователя и переопределяем переменные $name и $author, присвоив им отфильтрованные значения от пользователя
*/
if(isset($_POST['name']) && isset($_POST['author'])) {
$nameFilter = htmlspecialchars($_POST ['name'], ENT_QUOTES, 'UTF-8');
$authorFilter = htmlspecialchars($_POST ['author'], ENT_QUOTES, 'UTF-8');
$name = $nameFilter;
$author = $authorFilter;
/**
* Вставку в базу данных
*/
$query = "INSERT INTO music VALUES(null, '$name', '$author')";
$mysqli->query($query);
}
В твоем пример просто проверка не будет работать:
if(isset($_GET['name']) && isset($_GET['author'])) {
$query = "INSERT INTO music VALUES(null, '$name', '$author')";
}
потому что внутри только по сути строка присваивается переменной, должно быть внутри if как минимум еще это:
$query = "INSERT INTO music VALUES(null, '$name', '$author')";
$mysqli->query($query);
Тут, как я уже писал выше, есть полный пример кода вместе с базой данных:
https://fructcode.com/ru/qa/php-mysql-domasnee-zadanie-57-uroka-tgukud/
student_t6h_cJbE - можете пожалуйста помочь написать проверку, а то я просто не могу понять, как её написать
if(isset($_GET['name']) && isset($_GET['author'])) {
$query = "INSERT INTO music VALUES(null, '$name', '$author')";
}
попробовал сделать такую проверку, на сайте заголовок и автор появляется, но в самой базе почему-то не отображается
student_t6h_cJbE - просто ссылку не заметил, сейчас просмотрел и все свои ошибки исправил, спасибо большое за помощь!