Как решить эти проблемы?

0

Приступил к практике из 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>
php
mysql

5 ответов

1

Нужно проверку ставить, если post данные приходят, только тогда выполнять insert:

$query = "INSERT INTO music VALUES(null, '$name', '$author')";

в похожих вопросах есть же готовый код, там можно посмотреть эту проверку и реализацию:

https://fructcode.com/ru/qa/php-mysql-domasnee-zadanie-57-uroka-tgukud/

0

Я ссылку выше приводил с примером кода, вот от туда проверка:

/* Проверяем, существуют ли переменные $_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/

0

student_t6h_cJbE - можете пожалуйста помочь написать проверку, а то я просто не могу понять, как её написать

0

if(isset($_GET['name']) && isset($_GET['author'])) {
$query = "INSERT INTO music VALUES(null, '$name', '$author')";
}

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

0

student_t6h_cJbE - просто ссылку не заметил, сейчас просмотрел и все свои ошибки исправил, спасибо большое за помощь!

Sign up or Log in to write an answer