Почему не отображаются данные после нажатия на кнопку?

У меня на 1 странице есть картинки, при нажатии на какую-то определенную картинку, я получаю ее имя и по этому имени ищу ее в базе и достаю информацию о ней. На другой странице она [информация] отображается вместе с картинкой. Также, на странице с информацией есть кнопку брони, при нажатии на которую передается id книги, он ищется уже в другой таблице и в соответствии с найденной информацией уже либо бронируется, либо пишется, что уже забронирована книга. Я хочу, чтобы при нажатии на "Забронировать!" страница обновлялась и выводилось сообщение о брони или отказе в бронировании.

Я когда жму на кнопку "Забронировать!" Меня кидает на ту же страницу, но там не отображается информация по книге, я не совсем понимаю почему. Только ошибка: Notice: Undefined index: image in C:\xampp\htdocs\Library\book-1.php on line 15 Строка 15:

`$image = 'book/'.$_GET['image']; // Получаем параметр GET, который передали` 

Я думаю, может это потому, что $image получаю при нажатии на картинку на другой странице, а тут я на кнопку жму и поэтому он бунтует. Я просто предполагаю, потому что других идей нет..

Просто, если это та же страница, просто перезагружаемая, почему ничего не отображается? Если я вставляю ссылку в эту строку:

 <td><a href='?res_id={$array['id']}'>Забронировать!</a></td>" . 

То вообще ничего не добавляется в бд.Как это исправить?

Весь код:

<?php
session_start();

include_once("header.php");
 ?>


<?php
require_once 'BDconnect.php'; // Подключаем БД из файла

$image = 'Book/'.$_GET['image']; // Получаем параметр GET, который передали

// table - название Вашей таблицы
$sql = "SELECT * FROM `book` WHERE `image`=:image"; // запрос в БД(поиск записи по id)

$req = $dbh->prepare($sql);
$req->bindValue(':image', $image, PDO::PARAM_STR); //Данные, которые передаёте в запрос
$req->execute();
$array = $req->fetch(PDO::FETCH_ASSOC); // Возвращаем значение.
?>


<table style="margin-right: 700px; margin-top: 20px;"  border='1' align="right" width="20%" cellpadding="28" cellspacing="0" > 

<?php
require_once 'Connection.php';


if (isset($_GET['res_id'])) { //проверяем, есть ли переменная

  $res_id = mysqli_real_escape_string($link, $_GET['res_id']);
  $result = mysqli_query($link, "SELECT id FROM `book` WHERE `id` = '$res_id'");
  $row = mysqli_fetch_array($result);
  $result = mysqli_query($link, "SELECT id_book FROM `reservation` WHERE `id_book` = '$res_id'");
  if($result->num_rows > 0){
    echo "Книга уже забронирована";
  }else{
  $dir='';
  $date_today = date('d-m-Y');
  $time = strtotime("+1 month");
  $fecha = date("d-m-Y", $time);
  $users_id = $_SESSION['user']['id'];
    // строку из таблицы
    $sql = mysqli_query($link, "INSERT INTO `reservation`(`id_book`,`users_id`,`bookissuingdate`,`bookreturndate`) VALUES ('$res_id', '$users_id', '$date_today', '$fecha')");
    if ($sql) {
      echo "<h2>Данные о книге добавлены.</h2>";
    } else {
      echo '<p>Произошла ошибка: ' . mysqli_error($link) . '</p>';
    }
}

}
?>


  <?php
if (!isset($_SESSION['user']) && (!isset($_SESSION['admin']))) {
  echo 'Доступно только зарегистрированным пользователям.';
}else{
    $sql = mysqli_query($link, 'SELECT `id`, `id_section`,`Name`, `Author`, `BookEdition`, `Yearofpublication`, `Jenre`, `NumberofPages`FROM `book`');
    if($array) { // Выводим данные
      echo '<tr>' .
      "<td>№ секции <td>{$array['id_section']}</tr>".
      "<td>Название книги <td>{$array['Name']}</tr>".
      "<td>Автор <td>{$array['Author']}</tr>" .
      "<td>Издание <td>{$array['BookEdition']}</tr>".
      "<td>Год публикации <td>{$array['Yearofpublication']}</tr>" .
      "<td>Жанр <td>{$array['Jenre']}</tr>".
      "<td>Количество страниц <td>{$array['NumberofPages']}</tr>".
      "<td><a href='?res_id={$array['id']}'>Забронировать!</a></td>" .
      '</tr>';

    }

    echo '<img src=" Admin/'.$image.'"style=" margin-left: 400px; margin-top: 20px; width:400px;"; />';
  }
?>

</table>

<?php
include_once("footer.php");
?>

(Да, тут 2 разных подключения. Я знаю, что это не очень хорошо, но с куском PDO, мне помогли, я пыталась и остальное сделать через него, но у меня не вышло, поэтому сделала так, как умею)


Ответы (1 шт):

Автор решения: Ипатьев

ОМГ, я понял. Я два дня смотрел на этот кошмар и не мог понять что с ним не так.

Это все-таки надо сдать в музей. Я не видел очевидную ошибку по той простой причине что по логике её там не должно быть. Но этот код абсолютно нелогичен, и делает совсем не то что написано, не там, и не так.

Я все понимаю, - мы все учимся, не всё сразу понимаем. Но здесь уже, мне кажется, перебор

Да, чтобы информация отображалась, надо передать картинку:

"<td><a href='?res_id={$array['id']}&image={$_GET['image']}'>Забронировать!</a></td>"  .

И ровно в таком виде сдать. Чтобы преподаватель лично увидел степень понимания кода.

→ Ссылка