Задание 56. PHP

0

Помогите разобраться,

не понятно почему при обновлении страницы player.php,

не вводя при этом ничего в форму, данные в базу добавляются сами,

то есть добавляется последние введенные данные.

ВОТ КОД СТРАНИЦЫ:

<?php

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

  $mysqli = new mysqli('localhost', 'root', '', 'kinomonster');

  if (mysqli_connect_errno()) {
      print_f("Соединение не установлено", mysql_connect_error());
      exit();
  }

  $mysqli->set_charset('utf8');    

  $query = $mysqli->query ('SELECT * FROM musika');

  while ($row = mysqli_fetch_assoc($query)) {
    echo $row['name']." - ".$row['author']."<br>";
  }


  if (isset($name, $author)) {
        //Вставляем данные, подставляя их в запрос
    $query = "INSERT INTO musika VALUES (null, '$name', '$author')";
      $mysqli->query($query);
  //    Если вставка прошла успешно
      if ($mysqli) {
        echo "<p>Данные успешно добавлены в таблицу.</p>";
   } else {
       echo "<p>Произошла ошибка.</p>";
   } 
  }

  $mysqli->close();


?>

<!DOCTYPE html>
<html lang="ru">
<head>
  <meta charset="UTF-8">
  <title>Document</title>
</head>
<body>
  
  <form action="" method="POST">
    <div>Название</div><input type="text" name="name" placeholder="название песни">
    <div>Автор</div><input type="text" name="author" placeholder="исполнитель">
    <input type="submit" value="Отправить">
  </form>
<br>

</body>

</html>

Что не так, в чем проблема в коде ???

php
mysql
insert

2 ответов

3

Похожий вопрос уже задавался здесь:

https://fructcode.com/ru/qa/pochemu-pri-kajdom-obnovlenii-tablisi/

Быстрое решение, для того, чтобы каждый раз не вставлялись данные из html-формы через POST, нужно использовать где insert следующий код:

 if($mysqli->query($query)) { // Если выполнился query
      // Здесь редирект
     header("Location: " . $_SERVER['REQUEST_URI']);
     exit();
 }

 

1

student_9vRGlZif

если возможно разьясните в коде:

if($mysqli->query($query)) { // Если выполнился query

// Здесь редирект

header("Location: нужно-ли здесь что-то вставлять" .

$_SERVER['REQUEST_URI нужно-ли здесь что-то вставлять']);

exit();

}

Заранее благодарен

if($mysqli->query($query)) { // Если выполнился query
      
// Здесь редирект
     header("Location:ЗДЕСЬ НУЖНО ЧТО_ТО ВСАВЛЯТЬ " . $_SERVER['REQUEST_URI']);
     exit();
 }
//'REQUEST_URI' это тоже всавлять как есть
Sign up or Log in to write an answer