Javascript 如何在jQuery/php/mySQL中显示最近的通知?
假设有一个新行插入到数据库中。如何在div中显示一次通知,但在关闭它之后,它不会再次显示?我知道我不能使用Javascript 如何在jQuery/php/mySQL中显示最近的通知?,javascript,php,jquery,pdo,Javascript,Php,Jquery,Pdo,假设有一个新行插入到数据库中。如何在div中显示一次通知,但在关闭它之后,它不会再次显示?我知道我不能使用setInterval,因为它会在一个时间间隔(比如说10秒)后不断弹出。我的想法是,它每10秒检查一次更新,如果有新行,它将显示通知,但在我按下“x”后,它将关闭。10秒后,它将再次检查,现在它将检查行的id是否与以前相同。如果没有,则显示新的祝酒词 因此,我使用了setTimeout函数并再次触发它 (function poll(){ setTimeout(fun
setInterval
,因为它会在一个时间间隔(比如说10秒)后不断弹出。我的想法是,它每10秒检查一次更新,如果有新行,它将显示通知,但在我按下“x”后,它将关闭。10秒后,它将再次检查,现在它将检查行的id是否与以前相同。如果没有,则显示新的祝酒词
因此,我使用了setTimeout
函数并再次触发它
(function poll(){
setTimeout(function(){
$.ajax({ url: "ravimDataCount.php", success: function(data){
//check if the id is the same or not here
$("#noti-box").append('<div class="alert alert-info "><button data-dismiss="alert" class="close close-sm" type="button"><i class="fa fa-times"></i></button>New form filled out by Dr.</div>');
poll();
}, dataType: "json"});
}, 5000);
})();
(函数轮询(){
setTimeout(函数(){
$.ajax({url:“ravimDataCount.php”),成功:函数(数据){
//检查此处的id是否相同
$(“#noti box”).append('博士填写的新表格');
poll();
},数据类型:“json”});
}, 5000);
})();
我已经和它斗争了很长时间了。谢谢你的帮助
编辑强>
如以下答案所述。我在DB中添加了一个名为seen的neew列。默认值为0。如果我理解正确,那么我需要在通知显示后立即将SEED=0更改为1,这样它就不会再循环,并向我显示无限数量的相同通知
这就是我目前的情况:
function fetch_notification(){
setInterval(function(){
//GET ALL DATA WHERE SEEN=0
$.ajax({
url: "fetchResults.php",
success: function(data){
$.each(data.vormid, function(i, vormid) {
$("#noti-box").append('<div class="alert alert-info "><button data-dismiss="alert" class="close close-sm" type="button"><i class="fa fa-times"></i></button>New form filled out by Dr. '+data.vormid[i].arsti_eesnimi+' '+data.vormid[i].arsti_perekonnanimi+'</div>');
});
update_notification();
}, dataType: "json"});
}, 5000);
}
fetch_notification();
//UPDATE SEEN=0 to 1
function update_notification(){
console.log("updating");
}
函数获取通知(){
setInterval(函数(){
//获取看到的所有数据=0
$.ajax({
url:“fetchResults.php”,
成功:函数(数据){
$.each(data.vormid,function(i,vormid){
$(“#noti box”).append('Dr.+data.vormid[i].arsti#u eesnimi+''+data.vormid[i].arsti#u perekonnanimi+''填写的新表格);
});
更新通知();
},数据类型:“json”});
}, 5000);
}
获取通知();
//更新SEEN=0到1
函数更新通知(){
控制台日志(“更新”);
}
我的两个PHP文件是fetchResults.PHP和updateResults.PHP
fetchResults.php:
<?php
header('Content-Type: application/json');
include_once '../dbconfig.php';
$stmt4 = $DB_con->prepare("SELECT * FROM ravim WHERE seen =0 ORDER BY date_created DESC");
$stmt4->execute();
$vormid = $stmt4->fetchAll(PDO::FETCH_ASSOC);
echo json_encode(array("vormid" => $vormid));
?>
<?php
header('Content-Type: application/json');
include_once '../dbconfig.php';
$ravim_id = $_POST['ravim_id'] ;
$stmt4 = $DB_con->prepare("UPDATE ravim SET seen=1 WHERE ravim_id=:ravim_id");
$stmt4->execute();
?>
updateResults.php:
<?php
header('Content-Type: application/json');
include_once '../dbconfig.php';
$stmt4 = $DB_con->prepare("SELECT * FROM ravim WHERE seen =0 ORDER BY date_created DESC");
$stmt4->execute();
$vormid = $stmt4->fetchAll(PDO::FETCH_ASSOC);
echo json_encode(array("vormid" => $vormid));
?>
<?php
header('Content-Type: application/json');
include_once '../dbconfig.php';
$ravim_id = $_POST['ravim_id'] ;
$stmt4 = $DB_con->prepare("UPDATE ravim SET seen=1 WHERE ravim_id=:ravim_id");
$stmt4->execute();
?>
我想不出来。我知道我必须将通知的正确行ID传递给updateResults.php。创建一个全局变量,在其中保留最后一个ID:
var lastID;
然后在函数内部,在注释下,假设数据包含新行的id,只需选中:
if (lastID != data)
showNotification();
// update lastID
lastID = data;
创建保留最后一个id的全局变量:
var lastID;
然后在函数内部,在注释下,假设数据包含新行的id,只需选中:
if (lastID != data)
showNotification();
// update lastID
lastID = data;
我所知道的实现方法是
seen
的列(INT)或您喜欢的内容
seen
设置为默认值0
seen=0的值代码>
seen=0
的行,将列seen
更新为1
fetch\u notification()
,包括ajax,用于选择seen=0
update\u notification()
,将具有seen=0
的每一行更新为seen=1
fetch\u notification()之后
另一个想法是
创建一个表,将新通知添加到表中,并在用户显示或关闭通知时删除每一行 假设您想发出关于新用户的管理员通知
jQuery部分
数据库的主要功能是插入、删除和检查行号 我所知道的实现方法是
seen
的列(INT)或您喜欢的内容
seen
设置为默认值0
seen=0的值代码>
seen=0
的行,将列seen
更新为1
fetch\u notification()
,包括ajax,用于选择seen=0
update\u notification()
,将具有seen=0
的每一行更新为seen=1
fetch\u notification()之后
另一个想法是
创建一个表并将新通知添加到表a中