PHP: Показать да / нет диалоговое окно подтверждения - PullRequest
18 голосов
/ 06 августа 2009

Моя страница PHP содержит ссылку для удаления одной таблицы данных MySQL. Я хочу, чтобы это происходило таким образом, чтобы при нажатии на ссылку «удалить» появлялось окно подтверждения с вопросом «Вы уверены, что хотите удалить?» С двумя кнопками: «Да» и «Нет». , Когда я нажимаю «да», я хочу удалить данные таблицы MySQL, а когда я нажимаю «нет», ничего не должно происходить.

Ответы [ 13 ]

50 голосов
/ 06 августа 2009
<a href="http://stackoverflow.com" 
    onclick="return confirm('Are you sure?');">My Link</a>
17 голосов
/ 21 сентября 2012
<input name="_delete_" type="submit" value="Delete" onclick="return confirm('Are you sure?')">
9 голосов
/ 06 августа 2009

Вы всегда должны использовать кнопку формы / сообщения, чтобы подтвердить что-то вроде этого. Никогда не полагайтесь на Javascript. Прочитайте это , чтобы понять, почему!

8 голосов
/ 06 августа 2009

Вы можете использовать JavaScript для запроса:

Нашел здесь - Пример

<script>
function confirmDelete(delUrl) {
  if (confirm("Are you sure you want to delete")) {
   document.location = delUrl;
  }
}
</script>

<a href="javascript:confirmDelete('delete.page?id=1')">Delete</a>

Другой способ

<a href="delete.page?id=1" onclick="return confirm('Are you sure you want to delete?')">Delete</a> 

Предупреждение : этот JavaScript не помешает удалению записей, если они просто перейдут к окончательному URL - delete.page?id=1 в своем браузере

3 голосов
/ 06 августа 2009

Обычно я создаю страницу удаления, которая показывает форму подтверждения, если метод запроса «GET», и удаляет данные, если метод «POST» и пользователь выбрал опцию «Да».

Затем на странице со ссылкой для удаления я добавляю функцию onclick (или просто использую плагин jQuery для подтверждения ), который использует AJAX для публикации по ссылке, минуя страницу подтверждения.

Вот идея в псевдокоде:

delete.php:

<?php
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
    if ($_POST['confirm'] == 'Yes') {
        delete_record($_REQUEST['id']); // From GET or POST variables
    }
    redirect($_POST['referer']);
}
?>

<form action="delete.php" method="post">
    Are you sure?
    <input type="submit" name="confirm" value="Yes">
    <input type="submit" name="confirm" value="No">

    <input type="hidden" name="id" value="<?php echo $_GET['id']; ?>">
    <input type="hidden" name="referer" value="<?php echo $_SERVER['HTTP_REFERER']; ?>">
</form>

Страница со ссылкой для удаления:

<script>
    function confirmDelete(link) {
        if (confirm("Are you sure?")) {
            doAjax(link.href, "POST"); // doAjax needs to send the "confirm" field
        }
        return false;
    }
</script>

<a href="delete.php?id=1234" onclick="return confirmDelete(this);">Delete record</a>
1 голос
/ 23 октября 2018

Попробуйте это:

<td>
    <a onclick="return confirm(\'Are you sure?\');" href="'.base_url('category/delete_category/'.$row->category_id).'" class="btn btn-danger btn-sm"><i class="fa fa-trash"></i> Delete Coupon</a>
</td>
0 голосов
/ 20 мая 2019
<a onclick="javascript:return confirm('Are You Confirm Deletion');" href="delete_customer.php?a=<?php echo $row['id']; ?>"  class="btn btn-danger a-btn-slide-text" style="color: white; width:86px; height:37px;" > <span class="glyphicon glyphicon-remove" aria-hidden="true"></span><span><strong></a></strong></span> 
0 голосов
/ 20 марта 2018

Я также искал способ сделать это и понял это, используя формы и атрибут formaction:

<input type="submit" name="del_something" formaction="<addresstothispage>" value="delete" />
<?php if(isset($_POST['del_something'])) print '<div>Are you sure? <input type="submit" name="del_confirm" value="yes!" formaction="action.php" />
<input type="submit" name="del_no" value="no!" formaction="<addresstothispage>" />';?>

action.php проверит наличие isset ($ _ POST ['del_confirm']) и вызовет соответствующий скрипт php (для действий с базой данных или любого другого) Вуаля, никакой JavaScript не требуется. Используя атрибут formaction, кнопка удаления может быть частью любой формы и при этом вызывать другое действие формы (например, вернуться к той же странице, но с установленной кнопкой).

Если кнопка была нажата, отобразятся кнопки подтверждения.

0 голосов
/ 30 декабря 2016

<input type="submit" name="submit" value="submit" onclick="return confirm('Are you sure?');"/> Вы можете выполнить это действие и на кнопке!

0 голосов
/ 20 мая 2016

Лучший способ, который я нашел, здесь.

HTML-код

<a href="delete.cfm" onclick="return confirm('Are you sure you want to delete?');">Delete</a>

ДОБАВЬТЕ ЭТО В ГОЛОВУ РАЗДЕЛ $(document).ready(function() { $('a[data-confirm]').click(function(ev) { var href = $(this).attr('href'); if (!$('#dataConfirmModal').length) { $('body').append('<div id="dataConfirmModal" class="modal" role="dialog" aria-labelledby="dataConfirmLabel" aria-hidden="true"><div class="modal-header"><button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button><h3 id="dataConfirmLabel">Please Confirm</h3></div><div class="modal-body"></div><div class="modal-footer"><button class="btn" data-dismiss="modal" aria-hidden="true">Cancel</button><a class="btn btn-primary" id="dataConfirmOK">OK</a></div></div>'); } $('#dataConfirmModal').find('.modal-body').text($(this).attr('data-confirm')); $('#dataConfirmOK').attr('href', href); $('#dataConfirmModal').modal({show:true}); return false; }); }); Вы должны добавить Jquery и Bootstrap, чтобы это работало.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...