gpt4 book ai didi

javascript - 从数据库 mysql php 删除引导警报

转载 作者:行者123 更新时间:2023-11-29 18:14:25 26 4
gpt4 key购买 nike

所以我有一个使用引导警报创建的通知页面。这是一个片段,每个通知都是来自数据库一行的回显

<div class="container" >

<?php
$fetch = $conn->query("SELECT * FROM notifications");

while($row = $fetch->fetch_assoc()) {
$id = ''.$row["id"].'';
$notification = ''.$row["notifications"].'';

?>

<div class="alert alert-warning alert-dismissable ">
<a href="#" class="close" data-dismiss="alert" aria-label="close" id="close">
<form action='deletenotifications.php' method='post' id='myform' >
<input type='hidden' name='id' id='id' value="<?php echo $id ?>" />
<span type="submit">&times;</span>
</form></a>
<?php echo $notification; ?>
</div>


<?php } ?>

</div>

用户按下 X 时需要删除通知,因此也需要从数据库中删除通知,因此需要使用 jquery AJAX 方法将包含警报 id 的隐藏表单发送到操作 deletenotication.php

<script type="text/javascript">
$('#close').click(function(){
$.post(
$('#myform').attr('action'),
$('#myform :input').serializeArray(),
);
});
</script>

这里是deletenotification.php 片段

$id = $_POST['id']; 


$sqlf = $conn->query("SELECT * from notifications");

while($rown = $sqlf->fetch_assoc()){
$idbase = ''.$rown['id'].'';

if($id == $idbase){
$sql = $conn->query("DELETE FROM notifications WHERE id=$id");

}

}

正在从数据库中删除,但前提是警报按顺序关闭,并且只删除一个警报,为了删除后续的警报,需要刷新页面。

关闭警报 2、3 和 4 不会删除这些行,除非删除通知 1,

我需要如果用户关闭任何要删除的随机警报,而不是按顺序

谢谢!

最佳答案

您不需要遍历所有结果,只需按 ID 删除特定行即可。这会花费您两次查询而不是一次查询,并且如果数据库中有大量通知,则第一个查询的成本可能会很高。相反,您可以直接通过 ID 进行删除,如下所示。

if ( ! empty( $_POST['id'] ) && (int) $_POST['id'] ) {
$id = (int) $_POST['id'];
$conn->query("DELETE FROM notifications WHERE id=$id");
}

在上面的示例中,为了安全起见,我将 ID 转换为整数。但实际上,您应该查看在那里使用的数据库类,而使用 prepared statement .

<小时/>

旁白:我注意到有几行像这样带有两个单引号。你不需要所有这些。它们仅在您串联时才有用。或者,如果您定义了一个字符串文字。

$id = ''.$row["id"].'';

相反,只需为其分配 ID 的值即可。

$id = $row['id'];
<小时/>

在响应从数据库中删除行的请求之前使用并验证 CSRF token 也是一个好主意;即,确保该请求是合法的。也许您已经在其他地方这样做了,但我想警告您以防万一。

参见:https://en.wikipedia.org/wiki/Cross-site_request_forgery

关于javascript - 从数据库 mysql php 删除引导警报,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47144182/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com