Intereting Posts
Потоковое аудио HTML5 PHP – синтаксический анализатор BBCode – проанализируйте тег ссылки bbcode и не помечен ссылкой Автозагрузчик Composer vs Symfony 2 Обновление метаданных публикации товара в поле метаданных администратора Как создать список с использованием mailchimp API v1.3 php Загрузка фонового изображения Twitter с помощью API и данных с несколькими форматами Как удалить subarray из массива в php? Как сделать сайты с Java? PHP, передающий переменную с перенаправлением заголовка PHP, когда заголовок цикла и таблицы отображается только в том случае, если установлено значение db кросс-скомпилированный сервер THTTPD с PHP работает отлично, но нет PHP устаревшие ошибки при настройке Built2Go Car Dealer на xampp копировать данные после того, как пользователь выберет его PHP DOMDocument получает текст между двумя тегами SETS Symfony2: языковой стандарт по умолчанию не применяется в переводе

Кнопка удаления и подтверждение

Привет, У меня есть рабочая ссылка для удаления строки из моей базы данных.

<a href="?action=delete&id=<? echo $id ?>" onclick="return confirm('Are you sure you want to delete?')"><strong>Delete this Case</strong></a></td> <?php if($_POST['action']=="delete") { $id = $_POST['id']; mysql_query("DELETE FROM rmstable2 WHERE id= '$id'"); echo("> Case # $id has been deleted as requested. To see your changes please click <a href='/martinupdate.php?id=$id'>here</a></b><br>"); } ?> 

то, что я хочу сделать, вместо того, чтобы иметь ссылку, я хочу иметь кнопку, которая при нажатии вызывает подтверждение, а затем удаляет строку, если это правда.
Я не хочу случайных удалений.

 <form> <input type="button" value="Delete this Case" onclick="return confirm('Are you sure you want to delete?')"; <a href="?action=delete&id=<? echo $id ?>"> </form> 

Solutions Collecting From Web of "Кнопка удаления и подтверждение"

Попробуйте это в верхней части файла:

 <?php if ($_SERVER['REQUEST_METHOD'] == 'DELETE' || ($_SERVER['REQUEST_METHOD'] == 'POST' && $_POST['_METHOD'] == 'DELETE')) { $id = (int) $_POST['id']; $result = mysql_query('DELETE FROM rmstable2 WHERE id='.$id); if ($result !== false) { // there's no way to return a 200 response and show a different resource, so redirect instead. 303 means "see other page" and does not indicate that the resource has moved. header('Location: http://fully-qualified-url/martinupdate.php?id='.$id, true, 303); exit; } } 

При этом как форме:

 <form method="POST" onsubmit="return confirm('Are you sure you want to delete this case?');"> <input type="hidden" name="_METHOD" value="DELETE"> <input type="hidden" name="id" value="<?php echo $id; ?>"> <button type="submit">Delete Case</button> </form> 

вы должны подтвердить свое подтверждение в событии onSubmit формы

поэтому, если пользователь отменит подтверждение, форма не будет отправлена

 <form onSubmit="return confirm('Are you sure you want to delete?')"> <button type="submit" ...> </form> 

HTML:

 <form id="delete-<?php echo $id; ?>" action="?action=delete" method="post"> <input type="hidden" name="id" value="<?php echo $id; ?>" /> <input type="submit" value="Delete this Case" /> </form> 

JS im принимает jquery для удобства:

 $("#delete-<?php echo $id; ?>").submit(function() { return confirm("Are you sure you want to delete?"); }); 

Это предотвращает действие отправки по умолчанию, если подтверждение js возвращает false (не отправляет), в противном случае разрешает регулярный пост.

Примечание. Вы действительно не должны использовать атрибуты html для объявления обработчиков событий, этот код разделяет логику.

EDIT: @ Николас комментарий

Это не-jquery-решение. Я не тестировал его, и я не верю, что preventDefault работает в IE <= 8, поэтому я, вероятно, не буду использовать его в производстве, но это можно сделать без слишком большого кода jquery, просто заставляет его переходить через браузер и проще ,

 function loaded() { document.getElementById("delete-<?php echo $id; ?>").addEventListener( "submit", function(event) { if(confirm("Are you sure you want to delete?")) { event.preventDefault(); } return false; }, false ); } window.addEventListener("load", loaded, false);