Почему комментарии не отображаются на конкретной странице, а на всех?

110
07 апреля 2021, 04:20

Комментарии на сайте отображаются благодаря следующему коду:

  <form class="form_comments" action="comments.php" method="post">
    <textarea class="com_text" name="text_comment" maxlength="222" placeholder="Оставьте Ваш комментарий"></textarea>
    <input type="hidden" name="page_id" value="<?php echo $art['id']; ?>">
    <input class="sb" type="submit" value="Отправить">
  </form>

Файл comments.php

<?php
  $page_id = $_POST["page_id"];
  $text_comment = $_POST["text_comment"];
  $text_comment = htmlspecialchars($text_comment);// Преобразуем спецсимволы в HTML-сущности
  $mysqli = new mysqli("localhost", "root", "123", "db");// Подключается к базе данных
  $mysqli->query("INSERT INTO `comments` (`page_id`, `text_comment`) VALUES ('$page_id', '$text_comment')");// Добавляем комментарий в таблицу
  header("Location: ".$_SERVER["HTTP_REFERER"]);// Делаем реридект обратно
?>

И вывод на страничке:

  <?php
  $result = $connection->query("SELECT id FROM `films`");
  $row = $result->fetch_assoc();
  $page_id = $row['id']; // уникальный id фильма
    $mysqli = new mysqli("localhost", "root", "123", "db");// Подключается к базе данных
    $result_set = $mysqli->query("SELECT * FROM `comments` WHERE `page_id`='$page_id'"); //Вытаскиваем все комментарии для данной страницы
    while ($row = $result_set->fetch_assoc()) {
      print_r($row); //Вывод комментариев
      echo "<br>";
    }
  ?>

Есть таблица films в которой id имеет уникальный идентификатор фильма. И comments в которой есть id,page_id (id страницы, на которой был оставлен комментарий), text_comment.

Проблема в том, что комментарии написанные допустим под фильмом с id 1 отображаются и под другими тоже.

Подскажите пожалуйста в чём проблема?

Answer 1

Для получения конкретного фильма вам необходимо например добавить GET параметр: film.php?id=1 - где 1 будет id фильма который вытаскивается в данный момент

Далее код вывода меняется:

<?php
    $page_id = $_GET['id']; // уникальный id фильма
    $mysqli = new mysqli("localhost", "root", "123", "db");// Подключается к базе данных
    $result_set = $mysqli->query("SELECT * FROM `comments` WHERE `page_id`='$page_id'"); //Вытаскиваем все комментарии для данной страницы
    while ($row = $result_set->fetch_assoc()) {
      print_r($row); //Вывод комментариев
      echo "<br>";
    }
  ?>
READ ALSO
export import laravel

export import laravel

Не могу импортировать файл взятый с экспорта csvПроблема в кодировке

78
Как правильно сделать foreach?

Как правильно сделать foreach?

Сразу извиняюсь если вопрос глупый, возможно я не так гуглил

103
Обход последнего прохода цикла php

Обход последнего прохода цикла php

Вот примерная схема цикла:

120
Не получается передать объекты в массив

Не получается передать объекты в массив

Почему нельзя передать объекты в массив подобным образом?

103