如何在jQuery/php/mySQL中显示最近的通知?更新
继续提问 如以下答案所述。我在DB中添加了一个名为seen的neew列。默认值为0。如果我理解正确,那么我需要在通知显示后立即将SEED=0更改为1,这样它就不会再循环,并向我显示无限数量的相同通知 这就是我目前的情况:如何在jQuery/php/mySQL中显示最近的通知?更新,php,jquery,pdo,Php,Jquery,Pdo,继续提问 如以下答案所述。我在DB中添加了一个名为seen的neew列。默认值为0。如果我理解正确,那么我需要在通知显示后立即将SEED=0更改为1,这样它就不会再循环,并向我显示无限数量的相同通知 这就是我目前的情况: function fetch_notification(){ setInterval(function(){ //GET ALL DATA WHERE SEEN=0 $.a
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();
?>
编辑
所以我只显示了一次通知。现在,我的问题来自音频,一般来说,我写的代码是“好的”,还是应该更改一些内容。
音频:我想在每次收到通知时播放一个声音,但一开始它会一直播放一次。我尝试添加一个loopcounter,并检查对象是否为空,但它不起作用。如何处理音频有什么建议或良好的实践吗
代码:
$.ajaxSetup({
缓存:false
});
var loopLimit=1;
var-loopCounter=0;
setInterval(函数(){
$.getJSON('fetchResults.php',函数(数据){
$(“#加载div”).show();
$(“#noti box”).empty();
$(“#notificationTitle”).empty();
if(jQuery.isEmptyObject(数据)){
console.log(“没有数据”);
}否则{
控制台日志(数据);
if(loopCounter由Dr.+data.vormid[i]填写的新表格;
$(“.close”)。在('click',函数(){
var ravim_id=$(this.attr('id');
$.ajax({
类型:“POST”,
url:'updateResults.php',
数据:“ravim_id=“+ravim_id,
成功:功能(数据){
控制台日志(“成功”);
},错误:函数(数据){
console.log(“未保存”);
}
});
});
});
}
$(“#加载div”).fadeOut(“慢”);
});
}, 5000);
问题所在并不完全清楚,但您的代码中有一个错误:
$stmt4 = $DB_con->prepare("UPDATE ravim SET seen=1 WHERE ravim_id=:ravim_id");
$stmt4->execute();
您正在使用绑定参数,但未绑定它。您可以通过向execute()
方法添加一个数组或在单独的语句中手动绑定来解决这个问题
使用第一个选项:
$stmt4 = $DB_con->prepare("UPDATE ravim SET seen=1 WHERE ravim_id=:ravim_id");
$stmt4->execute(array(
':ravim_id' => $ravim_id
));
请注意,您还可以设置PDO,以便在遇到问题时抛出异常,因此您可能应该这样做,以便在出现异常时得到通知。我的问题是,如何将成功调用中的SEED值更新为1,使其不会再次显示相同的通知。如果您能帮助我解决此问题,我将非常高兴it@raqulka您需要从添加调用更新函数的javascript开始。我们不可能看到您希望何时以及如何执行此操作,但函数本身与用于获取结果的函数类似。好的。如果我是正确的,那么我需要将通知的ID传递给更新函数,对吗?这就是我被卡住的地方。@raqulka您只需向ajax调用添加一个
data
键,该键的值是一个对象,其中包含要发送到php脚本的键值对。这里有很多这样的例子。