ここから継続的な質問How can we show recent notifications in jQuery/php/mySQL?最近の通知をjQuery/php/mySQLでどのように表示できますか?更新
以下の回答に記載されています。私はDBと見なされた新しい列を追加しました。デフォルト値は0です。私が正しく理解していれば、通知が表示されるとすぐにseen = 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");
}
私の2つの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));
?>
updateResults.php:
<?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();
?>
EDIT 私は通知を一度しか表示できませんでした。私の質問は今オーディオと一般的に私が書いたコードは "大丈夫"または何かを変更する必要がありますが付属しています。 音声:通知が来るたびに音を鳴らしたいですが、最初は1回だけ再生し続けます。ループカウンターを追加して、オブジェクトが空であるかどうかをチェックしましたが、機能しません。どのようにオーディオを処理するためのアドバイスや良い練習?
コード:
$.ajaxSetup ({
cache: false
});
var loopLimit = 1;
var loopCounter = 0;
setInterval(function(){
$.getJSON('fetchResults.php', function(data) {
$("#loadingDiv").show();
$('#noti-box').empty();
$("#notificationTitle").empty();
if(jQuery.isEmptyObject(data)){
console.log("there is no data");
}else{
console.log(data);
if (loopCounter < loopLimit){
var sound = $("#notification")[0];
sound.currentTime = 0;
sound.load();
sound.play();
loopCounter++;
}
$.each(data.vormid, function(i, vormid) {
$("#noti-box").append('<div class="alert alert-info"><button id='+data.vormid[i].ravim_id+' data-dismiss="alert" class="close close-sm" type="button"><i class="fa fa-times"></i></button>New form filled out by Dr. <b>'+data.vormid[i].arsti_eesnimi+' '+data.vormid[i].arsti_perekonnanimi+' </b> at '+data.vormid[i].date_created+'</div>');
var id= $(".alert.alert-info").val();
$("#notificationTitle").append('<li style="font-size: 14px; padding: 0; margin: 0 0 10px 10px; color: #666666;" >New form filled out by Dr. '+data.vormid[i].arsti_eesnimi+' '+data.vormid[i].arsti_perekonnanimi+'</li>');
$(".close").on('click', function() {
var ravim_id = $(this).attr('id');
$.ajax({
type: "POST",
url:'updateResults.php',
data:"ravim_id=" + ravim_id,
success:function(data){
console.log("success");
},error: function(data){
console.log("not saved");
}
});
});
});
}
$("#loadingDiv").fadeOut("slow");
});
}, 5000);
私の質問は、成功通知から見た値を1に更新して、同じ通知をもう一度表示しないようにする方法です。 – raqulka
あなたがそれを手伝ってくれたらとてもうれしいです – raqulka
@raqulkaあなたは更新機能を呼び出すjavascriptを追加する必要があります。いつ、どのようにしてそれをしたいのかを見ることは不可能ですが、関数自体は結果を取得するために使用した関数に似ています。 – jeroen