PHP: Покажите да/нет диалоговое окно подтверждения

какая зарубка, сказанная действительно, с улучшением - разделитель может быть больше чем одним символом также.

я часто использовал

GROUP_CONCAT(name SEPARATOR '"|"')

, Возможности имени пользователя, содержащего "|", являются довольно низкими, я сказал бы.

18
задан Flexo 10 January 2012 в 15:27
поделиться

6 ответов

<a href="http://stackoverflow.com" 
    onclick="return confirm('Are you sure?');">My Link</a>
50
ответ дан 30 November 2019 в 05:39
поделиться

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

9
ответ дан 30 November 2019 в 05:39
поделиться

Вы можете использовать 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 в своем браузере

8
ответ дан 30 November 2019 в 05:39
поделиться

Обычно я создаю страницу удаления, которая показывает форму подтверждения, если метод запроса - «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>
3
ответ дан 30 November 2019 в 05:39
поделиться

PHP-способ сделать это будет используя диалоговую систему внутри php. например GTKDialogs: http://www.kksou.com/php-gtk2/articles/setup-a-dialog-box---Part-2---simple-yes-no-dialog.php Способ javacript, вероятно, немного проще, но помните, что когда javascript выключен, это не работает (кроме случаев, когда вы проверяете, включен ли javascript, а затем добавляете это !?) Это может быть обработчик onclick, например, tsvanharen, или простой текстовый диалог внутри страницы вместо всплывающего окна.

<a onClick="$('deletefromtable').show();"></a>
<div id="deletefromtable" style="display:none;">
 Do you really want to do this?<br/>
 <a href="deleteit.php">Yes</a>|<a onClick="$('deletefromtable').hide();">No</a>
</div>

Я использую прототип (отсюда тег $ () и show () / hide ()) для Это. но вы можете легко изменить его для работы без прототипа:

<a onClick='document.getElementById("deletefromtable").style.display = "block";' href="#">click here to delete</a>
<div id="deletefromtable" style="display:none;">
 Do you really want to do this?<br/>
 <a href="deleteit.php">Yes</a>|<a onClick='document.getElementById("deletefromtable").style.display = "none";' href="#">No</a>
</div>

Опять же, это не работает без javascript, но почти никакие параметры не работают.

0
ответ дан 30 November 2019 в 05:39
поделиться

Если вы что-то удаляете, вы всегда должны использовать POST, а не GET, поэтому использование confirm () - плохая идея. В вашей ситуации я использую модальное всплывающее окно, например jqModal , и отображаю форму с кнопками да / нет внутри всплывающего окна.

0
ответ дан 30 November 2019 в 05:39
поделиться
Другие вопросы по тегам:

Похожие вопросы: