#php #function
#php #функция
Вопрос:
Я только что создал функцию php
function deletebooking($orderID){
$sql="DELETE FROM bs_reservations WHERE id='".$orderID."'";
$result=mysql_query($sql) or die("oopsy, error when tryin to delete events 2");
}
У меня есть файл .php, который обрабатывает отправленную форму, а затем отображает HTML-страницу. Как мне добавить кнопку удаления бронирования, которая вызывает вышеупомянутую функцию на HTML-страницу. Переменная $OrderID уже установлена.
Предложения приветствуются
Комментарии:
1. Добавьте
(int)
прямо перед вашим$orderID
в запросе.
Ответ №1:
Вы можете использовать код javascript на кнопке, которую вы нажимаете, чтобы удалить запись как
<input type="button" name-"abc" id="abc" onclick="return Deleteqry(<?php echo $orderID ?>);"/>
Теперь вы можете написать функцию javascript внутри <head></head>
как
function Deleteqry(id)
{
if(confirm("Are you sure you want to delete this row?")==true)
window.location="yourpagename.php?del=" id;
return false;
}
Теперь вы можете написать в верхней части вашей страницы как
if($_GET['del'])
{
deletebooking($orderID);
}
Здесь мы используем оповещение о сообщении для подтверждения удаления с помощью окна предупреждения javascript…
Комментарии:
1. Спасибо, приятель, с помощью инструкции if я сохраняю это в том же файле или это в «yourpage.php »
2. да, вы можете написать код if($_GET[‘del’]) поверх yourpagename.php файл
3. по какой-то причине это не удаляет резервирование. что-то не так с моим sql
4. Прежде всего, проверьте, установлен ли ($OrderID) или нет. Вы можете повторить $OrderID. Также убедитесь, что вы написали функцию function deletebooking($OrderID) на той же странице, а тип <input> — кнопка не отправлять.
5. какого типа должна быть кнопка ввода? Я повторил это, но ничего не появилось, означает ли это, что это на самом деле не было передано? <?php включает «includes/dbconnect.php «; включить «includes/functions.php «; if($_GET[‘del’]) { deletebooking($OrderID); } echo $OrderID; ?>
Ответ №2:
Две вещи. Сначала найдите «SQL-инъекция». Очистите входные данные вашего запроса.
Второе: не делайте этого. Это не очень хорошая идея. Если orderID
на странице уже установлен параметр, то, предположительно, пользователь может изменить его на все, что захочет, а затем удалить. Вместо этого вы должны связать удаление идентификатора заказа с аутентификацией или вместо этого присвоить идентификаторам заказа статус (например, «Удалено»), который предотвращает потерю любых данных.
Кроме этого, другой ответ сделает то, что вам нужно. Это не сложно.
Ответ №3:
Вот пример страницы, давайте назовем ее page.php
:
<?
include "includes/dbconnect.php";
include "includes/functions.php";
if ($_POST['delete']){
deletebooking(intval($_POST['delete']));
echo "deleted!";
exit;
}
?>
<form action="page.php" method="post">
<input type="hidden" name="delete" value="<?=intval($orderID)?>" />
<input type="submit" value="Delete order #<?=intval($orderID)?>" />
</form>
Один файл является одновременно формой, которую вы представляете пользователю, и кодом, который выполняет фактическое удаление. Мы передаем идентификатор записи, подлежащей удалению, как скрытое значение формы.
Комментарии:
1. это работает нормально, но есть одна проблема, поскольку я новичок в php. Я не понимаю, что должно быть в «your_page.php «это просто страница, которую он загружает?
2. это файл, который содержит вашу функцию и второй фрагмент кода в моем сообщении
3. к сожалению, на самом деле это ничего не удаляет. Это мой «your_Page.php «<?php include»includes/dbconnect.php «; включить «includes/functions.php «; если ($_POST[‘delete’]){ deletebooking($OrderID); } эхо «Удалено»?>
4. похоже, что ваш идентификатор заказа на самом деле не отправляется. я изменю свой ответ, чтобы включить это
Ответ №4:
Я бы также предложил добавить перезагрузку в вашу функцию, чтобы идентификатор не оставался в URL после действия удаления.
$page = 'current.php';
if($_GET['del'])
{
deletebooking($orderID,$page);
}
function deletebooking($orderID,$page){
$sql="DELETE FROM bs_reservations WHERE id='".$orderID."'";
$result=mysql_query($sql) or die("oopsy, error when tryin to delete events 2");
header('Location: '.$page, true, 303);
}