我的代码示例:
<form action="test.php" method="GET">
<input type="text" name="Delete_This" value="<?php if (isset($_GET['Delete_This'])) echo $_GET['Delete_This']?>">
<input type="submit" name="Deleting" value="Delete this">
<?php
// If the deleting button is pressed
if (isset($_GET['Deleting']))
{
$DeleteThis = $_GET['Delete_This'];
?>
<script type='text/javascript'>
if (confirm('Are you sure you want to delete <?php echo $DeleteThis ?> ?'))
alert('<?php echo $DeleteThis ?> deleted');
<?php
$sql_delete="DELETE FROM table WHERE Name like '".$DeleteThis ."'";
mysqli_query($db,$sql_delete);
?>
else
alert('Not deleted');
</script>
<?php } ?>
</form>
确认框正常打开。我的问题是,无论我点击OK或Cancel, $sql_delet
被执行。我知道我应该在我的文档的顶部<head>
上使用Javascript,但如果我这样做,我就不能执行删除查询,我必须警告用户他要删除什么。{$DeleteThis}
工作良好。我还在input
上使用了onclick
功能,但我不能使用{$DeleteThis}
。
合成:我想,如果confirm
框被取消,查询不会被执行,我必须在confirm
和alert
中使用php变量
您可能需要了解服务器端语言和客户端语言之间的区别。
php代码中的所有内容都在html和javascript代码发送到用户浏览器之前执行。
相反,javascript代码中的任何内容都不能再影响php代码。
在你的代码中发生的是php首先检查是否有一个$_GET['Deleting']
变量。如果有,它会找到一些html和javascript,并记住以后应该将其输出到浏览器。然后执行删除查询。完成后,它将以下javascript(加上周围的html)发送到浏览器:
<script type='text/javascript'>
if (confirm('Are you sure you want to delete your-deletion-value ? 'nHey'))
alert('your-deletion-value deleted');
else
alert('Not deleted');
</script>
希望你们能看到两者之间的分离
你可以在
if (isset($_GET['Deleting']))
{
$DeleteThis = $_GET['Delete_This'];
if(!isset($_GET['ConfirmDelete'])//if confirmation has not been initiated yet
{
?>
<script type='text/javascript'>
function deleteOrNot(formEle)
{
if (confirm('Are you sure you want to delete <?php echo $DeleteThis ?> ?'))
window.location += '&ConfirmDelete=yes';//casue a postback with ConfirmDelete attribute in $_GET
else
alert('Not deleted');
</script>
<?php }
else if($_GET['ConfirmDelete'] == 'yes')
{
$sql_delete="DELETE FROM table WHERE Name like '".$DeleteThis ."'";
mysqli_query($db,$sql_delete);
}
} ?>
或者你可以在表单中使用一个带有必填属性的复选框,然后设置提交按钮,在使用onclick提交之前设置复选框的值。
<input type="checkbox" name='ConfirmDelete'
required <?php if(isset($_GET['ConfirmDelete']))
echo 'checked=' . $_GET['ConfirmDelete']; ?> >
<input type="submit" name="Deleting" onclick=
'this.form.ConfirmDelete.checked = deleteOrNot(this.form)' value="Delete this">
并像这样修改你的脚本
<script type='text/javascript'>
function deleteOrNot(formEle)
{
if(typeof formEle == 'undefined')
{
formEle = forms[0];
}
var result = confirm('Are you sure you want to delete' + formEle.Delete_This.value + ' ? 'nHey');
if (result)
alert(formEle.Delete_This.value + ' will be deleted');
else
alert('Not deleted');
return result;
}
</script>
注意:我添加了表单作为deleteOrNot函数的参数,并使用它来获取文本框的值。如果未选中
,则复选框上的required将阻止表单提交。
onclick="return confirm('Are you sure you want to delete?');"