Почему не отображаются данные после нажатия на кнопку?
У меня на 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>" .
И ровно в таком виде сдать. Чтобы преподаватель лично увидел степень понимания кода.