PHP:显示是/否确认对话框

时间:2009-08-06 11:37:16

标签: php javascript mysql

我的PHP页面有一个删除一个MySQL表格数据的链接。我希望它是这样一种方式,当我点击“删除”链接时,应该出现一个确认框,它应该询问“你确定,你想删除吗?”,有两个按钮:'是'和'否' 。当我单击是时,我想删除MySQL表的数据,当我单击否时,什么都不会发生。

14 个答案:

答案 0 :(得分:50)

<a href="http://stackoverflow.com" 
    onclick="return confirm('Are you sure?');">My Link</a>

答案 1 :(得分:17)

<input name="_delete_" type="submit" value="Delete" onclick="return confirm('Are you sure?')">

答案 2 :(得分:9)

您应该始终使用表单/帖子按钮来确认这样的内容。永远不要依赖Javascript。阅读this以了解原因!

答案 3 :(得分:8)

您可以使用JavaScript来提示您:

在此处找到 - Example

<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> 

警告:如果记录只是导航到浏览器中的最终网址 - delete.page?id=1,则此JavaScript不会停止删除

答案 4 :(得分:3)

我通常会创建一个删除页面,如果请求方法为“GET”,则显示确认表单;如果方法为“POST”且用户选择“是”选项,则删除数据。

然后,在带有删除链接的页面中,我添加了一个onclick函数(或只是使用jQuery confirm plugin),它使用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>

答案 5 :(得分:1)

尝试一下:

<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>

答案 6 :(得分:0)

这样做的PHP方法是使用php.for GTKDialogs中的对话框系统: http://www.kksou.com/php-gtk2/articles/setup-a-dialog-box---Part-2---simple-yes-no-dialog.php javacript方式可能有点容易,但请记住,当javascript关闭时,这不起作用(除非你检查javascript是否启用然后添加这个!?) 这可以是像tsvanharen发布的onclick处理程序,或者在页面内部使用简单的文本对话框而不是唠叨的弹出窗口。

<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,这不起作用,但几乎没有选项。

答案 7 :(得分:0)

如果你要删除某些东西,你应该总是使用POST而不是GET,所以使用confirm()是一个坏主意。我在你的情况下做的是使用像jqModal这样的模态弹出窗口,并在弹出窗口中显示带有是/否按钮的表单。

答案 8 :(得分:0)

onclick="return confirm('Log Out?')? window.open('?user=logout','_self'): void(0);"

这个剧本和之后我还是去了,我也去看了互联网。
是的,这是一个古老的威胁,但似乎没有任何类似的版本,我认为我的贡献。
最简单的&amp;最简单的方法适用于所有具有/在任何元素或字段中的浏览器。

您可以将window.open更改为在确认为TRUE时运行的任何其他命令,如果确认为void(0)或已取消,则与NULL相同。

答案 9 :(得分:0)

我找到的最佳方式就在这里。

HTML CODE

<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来实现这个目的。

答案 10 :(得分:0)

<input type="submit" name="submit" value="submit" onclick="return confirm('Are you sure?');"/> 你也可以在Button上执行这个动作!

答案 11 :(得分:0)

我也在寻找一种方法,并使用表格和形式属性来解决这个问题:

<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脚本(用于数据库操作或其他)。 Voilà,不需要javascript。使用formaction属性,删除按钮可以是任何表单的一部分,仍然可以调用不同的表单操作(例如,返回同一页面,但使用按钮设置)。

如果按下按钮,将显示确认按钮。

答案 12 :(得分:0)

<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> 

答案 13 :(得分:0)

您可以像三元运算符一样处理 onClick 属性,即“确定”和“取消”条件

场景: 这是我想显示确认框的场景,该框将在执行删除操作时询问“确定”或“取消”。我希望如果用户单击“确定”,则表单操作将重定向到页面位置,而在取消页面上将不会响应。

添加进一步的解释,我有一个 type="submit" 的按钮,它最初使用表单标签的默认表单操作。并且我想要具有相同输入类型的删除按钮的上述场景。

所以下面的代码对我来说工作正常

onClick="return confirm('Are you sure you want to Delete ?')?this.form.action='<?php echo $_SERVER['PHP_SELF'] ?>':false;"

完整代码

<input type="submit" name="action" id="Delete" value="Delete" onClick="return confirm('Are you sure you want to Delete ?')?this.form.action='<?php echo $_SERVER['PHP_SELF'] ?>':false;">

顺便说一下,我正在使用 PHP 在 html 元素中以内联方式实现此代码。所以这就是我使用'echo $_SERVER['PHP_SELF']'的原因。

我希望它也适用于您。 谢谢