Я создаю веб-приложение инвентаризации для своей школьной библиотеки. Все страницы построены на HTML, а PHP взаимодействует с базой данных MySQL.
Одна из страниц приложения позволяет выполнять поиск по названию книги в базе данных и возвращает результат в одной таблице (или нескольких таблицах, если результатов несколько).
Я хочу добавить кнопку внутри ячейки таблицы, которая при нажатии выполняет изменение параметра записи. Точнее, заголовок одного из столбцов называется «доступность». Если ответ «у», то книга доступна. Когда пользователь продает книгу, нажимает кнопку «Продать» справа, что изменяет параметр на «n».
Смотрите скриншот: https://drive.google.com/file/d/15y4w6UZpWVIVZjsQN6H3fsmTQeTdFDmP/view?usp=sharing
Как я могу это сделать?
Это код таблицы:
echo '<table style = "width:100%" border = "1">';
echo '<tr>';
echo '<th><font color = "navy" face = "Helvetica" size = "3"><center><p>Author:</p></center></font><th>';
echo '<th><font color = "navy" face = "Helvetica" size = "3"><center><p>Title:</p></center></font><th>';
echo '<th><font color = "navy" face = "Helvetica" size = "3"><center><p>ISBN:</p></center></font><th>';
echo '<th><font color = "navy" face = "Helvetica" size = "3"><center><p>Cover Price:</p></center></font><th>';
echo '<th><font color = "navy" face = "Helvetica" size = "3"><center><p>40% Price:</p></center></font><th>';
echo '<th><font color = "navy" face = "Helvetica" size = "3"><center><p>Availability:</p></center></font><th>';
echo '<th><font color = "navy" face = "Helvetica" size = "3"><center><p>Returned:</p></center></font><th>';
echo '<th><font color = "navy" face = "Helvetica" size = "3"><center><p>Phone:</p></center></font><th>';
echo '<th><font color = "navy" face = "Helvetica" size = "3"><center><p>First Name:</p></center></font><th>';
echo '<th><font color = "navy" face = "Helvetica" size = "3"><center><p>Last Name:</p></center></font><th>';
echo '<th><font color = "navy" face = "Helvetica" size = "3"><center><p>Class:</p></center></font><th>';
echo '<th><font color = "navy" face = "Helvetica" size = "3"><center><p>Student ID:</p></center></font><th>';
echo '<th><font color = "navy" face = "Helvetica" size = "3"><center><p>Sell:</p></center></font><th>';
echo '</tr>';
echo '<tr>';
echo '<th><font color = "black" face = "Helvetica" size = "2"><center>'.$results['author'].'</center></font><th>';
echo '<th><font color = "black" face = "Helvetica" size = "2"><center>'.$results['title'].'</center></font><th>';
echo '<th><font color = "black" face = "Helvetica" size = "2"><center>'.$results['isbn'].'</center></font><th>';
echo '<th><font color = "black" face = "Helvetica" size = "2"><center>'.$results['coverprice'].'</center></font><th>';
echo '<th><font color = "black" face = "Helvetica" size = "2"><center>'.$results['fortyprice'].'</center></font><th>';
echo '<th><font color = "black" face = "Helvetica" size = "2"><center>'.$results['availability'].'</center></font><th>';
echo '<th><font color = "black" face = "Helvetica" size = "2"><center>'.$results['returned'].'</center></font><th>';
echo '<th><font color = "black" face = "Helvetica" size = "2"><center>'.$results['phone'].'</center></font><th>';
echo '<th><font color = "black" face = "Helvetica" size = "2"><center>'.$results['firstname'].'</center></font><th>';
echo '<th><font color = "black" face = "Helvetica" size = "2"><center>'.$results['lastname'].'</center></font><th>';
echo '<th><font color = "black" face = "Helvetica" size = "2"><center>'.$results['class'].'</center></font><th>';
echo '<th><font color = "black" face = "Helvetica" size = "2"><center>'.$results['studentid'].'</center></font><th>';
echo '<th><form action = "BOOKS_changestatus.php" method = "GET"><input type = "submit" value = "Sell"></th>';
echo '</tr>';
echo '<br>';
}
Файл changestatus.php все еще пуст, хотя ...
Спасибо, что заметили это. Исправлено в моем коде. Однако вы можете помочь мне разобраться?
Извините, я не понял, что придумать
Опять же: закройте <form>, удалите <br>, добавьте </table>.
Для чего нужен changestatus.php
Измените данные «доступности» этой строки с «y» на «n» в базе данных.






Вы сделали здесь небольшую ошибку. Вы должны поместить скрытое поле в свою форму и отправить его на страницу php, где вы хотите обновить его в своей базе данных. Переставьте это
echo '<th><form action = "BOOKS_changestatus.php" method = "GET"><input type = "submit" value = "Sell"></th>';
с этим
echo '<th><form action = "changestatus.php" method = "GET">// I assumed that changestatus.php is your php page where you want to do database work
<input type = "hidden" name = "id" value = "' .$results['studentid'] . '"> //I assume that this is your id in your database
<input type = "submit" name = "submit" value = "Sell"></form></th>';
Сейчас на странице changestatus.php
if (isset($_GET['submit']))
{
$id = $_GET['studentid'];
//Now you have id and it will be easy for you now to update record in your database against this id
}
Примечание: Я сделал некоторые предположения относительно вашего кода. Вы можете поправить меня, если что-то не так
Я исправил выравнивание таблицы. Что мне нужно добавить на странице изменения статуса? Кнопка «Продать» должна изменить параметр «доступность» в базе данных с «y» на «n».
Привет, вы сделали форму, как в моем ответе?
Собственно, я решил использовать ссылку вместо кнопки, как вы можете видеть на этом скриншоте. drive.google.com/file/d/1Z54C-DAjg72HnehLbthaL46ryLNNI7SC/… Ссылка перенаправляет на changestatus.php, который должен выполнить изменение
Вы можете рассматривать кнопку отправки формы как обычную кнопку со скрытым полем studentid, а затем в changestatus.php вы можете получить studentid по запросу $_GET.
Я обновил ответ, чтобы вам было легче понять, а также еще раз проверьте файл changestatus.php
Простите, я не понимаю, что вы имеете в виду. Почему я должен использовать скрытое поле? Как видите, «Продать» - это просто ссылка на changestatus.php. У меня есть первичный ключ, который автоматически увеличивается для каждой новой записи в базе данных.
Хорошо, давайте сначала проясним. Как вы узнаете, какую запись вам нужно обновить?
Это основная проблема. У меня есть уникальный идентификатор для каждой записи в базе данных ..
Вот что я говорю. Вы должны вставить id каждой записи в скрытое поле и отправить его на страницу changestatus.php через запрос $_GET.
Ой, верно! Теперь я понимаю! Однако я вижу, что вы использовали ввод кнопки. Что, если бы я решил использовать метод ссылки <a href = "myurl.com/BOOKS_changestatus.php?"> Продать</a>
Да, вы также можете сделать это таким же образом <a href = "myurl.com/BOOKS_changestatus.php?studentid=$results['studentid']">Sell</a>;
А в changestatus.php поменяйте if (isset($_GET[submit''])) на if (isset($_GET[studentid'']))
Вы не закрыли тег
form