Обновление данных сразу в 2 таблицах, редактирование
У меня сразу несколько вопросов.. Пользователь может забронировать книгу (3 страница). Администратор может эту книгу отредактировать (1 страница). Также, книга появляется на странице 2, где находится список всех книг. И так, есть 3 страницы. Вопрос 1 заключается в след. Сначала разберусь с редактированиемм записей в целом. Ниже находится код страницы, на которой я пытаюсь отредактировать эту самую запись.
<?php
include_once("header_admin.php");
include_once("../Connection.php");
//Если переменная Name передана
if (isset($_POST["Name"])) {
//Вставляем данные, подставляя их в запрос
$file = $_FILES['uploadfile']['name'];
if (empty($file)) {
echo "<h2 align='center'>Файл не выбран</a>";
}else {
$filetype=$_FILES['uploadfile']['type'];
$file_name = strstr($file, '.', true);
$file_ext = strrchr($file, '.');
$whitelist = array(".jpg", ".jpeg", ".png", ".PNG", ".gif");
if (!in_array($file_ext, $whitelist)) {
echo '<h2 align="center">Вы пытаетесь загрузить не допустимое расширение файла</h2>';
exit();
}else {
//директория загрузки
$uploaddir = "book/";
//новое имя изображения
$apend=$file_name.'_'.date('YmdHis').rand(100,1000).$file_ext;
//путь к новому изображению
$uploadfile = "$uploaddir$apend";
if (move_uploaded_file($_FILES['uploadfile']['tmp_name'], $uploadfile)) {
if (isset($_GET['red_id'])) {
$sql = mysqli_query($link, "UPDATE `book` SET `id_section` = '{$_POST['id_section']}',`Name` = '{$_POST['Name']}',`Author` = '{$_POST['Author']}',`BookEdition` = '{$_POST['BookEdition']}',`Yearofpublication` = '{$_POST['Yearofpublication']}',`Jenre` = '{$_POST['Jenre']}',`NumberofPages` = '{$_POST['NumberofPages']}',`image` = '{$_POST['$uploadfile']}' WHERE `id`={$_GET['red_id']}");
} else {
//Иначе вставляем данные, подставляя их в запрос
$sql = mysqli_query($link, "INSERT INTO `book` (`id_section`,`Name`, `Author`, `BookEdition`, `Yearofpublication`, `Jenre`, `NumberofPages`, `image`) VALUES ('{$_POST['id_section']}','{$_POST['Name']}', '{$_POST['Author']}', '{$_POST['BookEdition']}', '{$_POST['Yearofpublication']}', '{$_POST['Jenre']}', '{$_POST['NumberofPages']}', '{$uploadfile}')");
}
}
if ($sql) {
echo '<h2>Данные добавлены</h2>';
}else {
echo '<h2>Произошла ошибка. Данные не записанны.</h2>';
}
}
}
}
?>
<?php
if (isset($_GET['red_id'])) {
//редактируем строку из таблицы
$sql = mysqli_query($link, "SELECT `id_section`, `Name`, `Author`, `BookEdition`, `Yearofpublication`, `Jenre`, `NumberofPages`, `image` FROM `book` WHERE `id`={$_GET['red_id']}");
$book = mysqli_fetch_array($sql);
if ($sql) {
echo "<h2>Данные о книге редактируются..</h2>";
} else {
echo '<p>Произошла ошибка: ' . mysqli_error($link) . '</p>';
}
}
?>
<h1>Введите информацию о книге</h1>
<form action="" method="post" enctype="multipart/form-data">
<table>
<tr>
<td>Название книги</td>
<td><input type="text" name="Name" value="<?= isset($_GET['red_id']) ? $book['Name'] : ''; ?>"></td>
</tr>
<tr>
<td>Автор</td>
<td><input type="text" name="Author" value="<?= isset($_GET['red_id']) ? $book['Author'] : ''; ?>"></td>
</tr>
<tr>
<td>Издательство</td>
<td><input type="text" name="BookEdition" value="<?= isset($_GET['red_id']) ? $book['BookEdition'] : ''; ?>"></td>
</tr>
<tr>
<td>Год публикации</td>
<td><input type="number" step="any" id="shest1"/ name="Yearofpublication" value="<?= isset($_GET['red_id']) ? $book['Yearofpublication'] : ''; ?>">
<script>
document.getElementById('shest1').oninput = function () {
if (this.value.length > 4) this.value = this.value.substr(0, 4); // в поле можно ввести только 7 символов
}
</script>
</td>
</tr>
<tr>
<td>Жанр</td>
<td><input type="text" name="Jenre" value="<?= isset($_GET['red_id']) ? $book['Jenre'] : ''; ?>"></td>
</tr>
<tr>
<td>Количество страниц</td>
<td><input type="number" step="any" id="shest2" name="NumberofPages" value="<?= isset($_GET['red_id']) ? $book['NumberofPages'] : ''; ?>"/>
<script>
document.getElementById('shest2').oninput = function () {
if (this.value.length > 7) this.value = this.value.substr(0, 7); // в поле можно ввести только 7 символов
}
</script>
</td>
</tr>
<tr>
<td>Секция</td>
<td>
<select name="id_section">
<option></option>
<?php
$sql = mysqli_query($link, 'SELECT `id`, `name` FROM `section`');
while ($result = mysqli_fetch_array($sql)) {
echo "\t\t<option value=\"{$result['id']}\">{$result['name']}</option>\n";
}
?>
</td>
<tr>
<td>Изображение</td>
<td><input type="file" name="uploadfile"/>
</td>
</tr>
</select>
</tr>
<tr>
<td colspan="6"><input type="submit" value="OK" name="ok"></td>
</tr>
</table>
</form>
<?php
if (isset($_GET['del_id'])) { //проверяем, есть ли переменная
$del_id = mysqli_real_escape_string($link, $_GET['del_id']);
$result = mysqli_query($link, "SELECT image FROM `book` WHERE `id` = '$del_id'");
$row = mysqli_fetch_array($result);
$dir='';
unlink($dir.$row[0]);
//удаляем строку из таблицы
$sql = mysqli_query($link, "DELETE FROM `book` WHERE `id` = $del_id");
if ($sql) {
echo "<h2>Данные о книге удалены.</h2>";
}elseif($result->num_rows > 0) {
echo '<h2>Книга не может быть удалена, поскольку она забронирована пользователемы</h2>';
}
else {
echo '<p>Произошла ошибка: ' . mysqli_error($link) . '</p>';
}
}
?>
<h1>Все книги</h1>
<table border='1' align="center" width="80%">
<tr>
<td>№ секции</td>
<td>Название книги</td>
<td>Автор</td>
<td>Издательство</td>
<td>Год публикации</td>
<td>Жанр</td>
<td>Количество страниц</td>
</tr>
<?php
$sql = mysqli_query($link, 'SELECT `id`, `id_section`,`Name`, `Author`, `BookEdition`, `Yearofpublication`, `Jenre`, `NumberofPages`FROM `book`');
while ($result = mysqli_fetch_array($sql)) {
echo '<tr>' .
"<td>{$result['id_section']}</td>" .
"<td>{$result['Name']}</td>" .
"<td>{$result['Author']}</td>" .
"<td>{$result['BookEdition']}</td>" .
"<td>{$result['Yearofpublication']}</td>" .
"<td>{$result['Jenre']}</td>" .
"<td>{$result['NumberofPages']}</td>" .
"<td><b><a href='?del_id={$result['id']}'>Удалить</a></b></td>" .
"<td><b><a href='?red_id={$result['id']}'>Редактировать</a></b></td>" .
'</tr>';
}
?>
Проблема заклчается в следующем. При редактировании у меня сбрасывается картинка и секция книги. К этому никаких претензий, но вот я, допустим, добавляю новую картинку, редактирую что-то там еще, сохраняю, но запись удаляется из БД. Почему? Ну и, можно ли как-то сделать так, чтобы при редактировании не слетала картинка и секция? Например. Я нажимаю на "редактировать" и у меня в форме редактирования написаны все данные, и, например, маленький образец картинки, которая стоит на данный момент. Вот, кстати, что появляется, если я пытаюсь отредактировать Warning: Undefined array key "$uploadfile" in C:\xampp\htdocs\Library\Admin\Book.php on line 27
Линия 27 -->
$sql = mysqli_query($link, "UPDATE `book` SET `id_section` = '{$_POST['id_section']}',`Name` = '{$_POST['Name']}',`Author` = '{$_POST['Author']}',`BookEdition` = '{$_POST['BookEdition']}',`Yearofpublication` = '{$_POST['Yearofpublication']}',`Jenre` = '{$_POST['Jenre']}',`NumberofPages` = '{$_POST['NumberofPages']}',`image` = '{$_POST['$uploadfile']}' WHERE `id`={$_GET['red_id']}");
Понятно, что он ругается на uploadfile, но почему? И еще, на 1 странице запись отается, но на других и в БД она исчезает. Опять таки. Почему? Я понимаю, что косякнула где-то, но. Я не понимаю где.
Ах, дополнение. Если я удаляю эту несуществующую отредактированную запись появляется ошибка --> Warning: unlink(): Invalid argument in C:\xampp\htdocs\Library\Admin\Book.php on line 131
Линия 131 -->
unlink($dir.$row[0]);
И 2 вопрос, касающийся этого же почти. Вот, допустим, редактирование работает. Как сделать так, чтобы при редактировании информация менялась также у книг, которые пользователь забронировал? Я имею ввиду. Вот я забронировала книжку, она добавилась в мой список забронированных книжек, (ниже код, если он нужен. Код страницы брони, где находится список книг, забронированных кем-то). И как сделать, чтобы он редактировался и там тоже? Я так думала, что это автоматически будет происходить, при редактировании информации, но, может это не так, потому что у меня не работает редактирование?
<?php
session_start();
require_once 'Connection.php';
?>
<?php
if (!isset($_SESSION['admin']))
{
include_once("header.php");
}else{
include_once("headers/header_admin_1.php");
}
?>
<h1>Забронировать</h1>
<table align="center" border='1' width="20%" cellpadding="28" cellspacing="0" >
<?php
if (isset($_GET['del_id'])) { //проверяем, есть ли переменная
$del_id = mysqli_real_escape_string($link, $_GET['del_id']);
$sql = mysqli_query($link, "DELETE FROM `reservation` WHERE `id` = $del_id");
if ($sql) {
echo "<h2>Данные о книге удалены.</h2>";
} else {
echo '<p>Произошла ошибка: ' . mysqli_error($link) . '</p>';
}
}
?>
<?php
if(isset($_SESSION['user'])){
$id = $_SESSION['user']['id'];
$sql = mysqli_query($link, "SELECT * FROM `reservation` WHERE `users_id` = $id");
while ($row = $sql->fetch_array()) {
echo '<tr>' .
"<tr><td>{$row['id_book']}</td>".
"<td>{$row['users_id']}</td>".
"<td>{$row['bookissuingdate']}</td>".
"<td>{$row['bookreturndate']}</td>".
"<td><b><a href='?del_id={$row['id']}'>Удалить</a></b></td>" .
'</tr>';
}
}elseif(!isset($_SESSION['user']) && (isset($_SESSION['admin']))){
$sql = mysqli_query($link, "SELECT * FROM `reservation`");
while ($row = $sql->fetch_array()) {
echo '<tr>' .
"<tr><td>{$row['id_book']}</td>".
"<td>{$row['users_id']}</td>".
"<td>{$row['bookissuingdate']}</td>".
"<td>{$row['bookreturndate']}</td>".
"<td><b><a href='?del_id={$row['id']}'>Удалить</a></b></td>" .
'</tr>';
}
}else{
if (!isset($_SESSION['user']) && (!isset($_SESSION['admin'])))
{
echo 'Доступно только зарегистрированным пользователям.';
}
}
?>
</table>
<?php
include_once("footerbottom.php");
?>