我有一些事件,在这些事件中,无论何时创建新事件,我都希望为用户弹出通知,以便他们知道。我想在任何用户创建新事件时都生成实时通知,而我已经为此使用了php和jQuery,但我面临的问题是我的代码是在新事件到来时生成通知,但仅一次且仅针对一个用户。我希望每个用户都可以收到有关事件的通知,但是如果用户收到该事件,则不能多次,那么就无需再次显示它们,但如果没有,则应该生成通知。所以这是我的代码:
Notification.php:-
<?php
$user = "root";
$pass = "";
$host = "localhost";
$dbname = "db_notification";
try {
$conn = new PDO("mysql:host=$host;dbname=$dbname", $user, $pass);
$conn->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);
} catch (PDOException $e) {
echo $e->getMessage();
}
$output = array(
'found' => 0,
'notifications' => array()
);
if ( ! empty($_GET['action'])) {
switch ($_GET['action']) {
case "show_last_five":
$sql = "SELECT * FROM `tbl_notification` INNER JOIN tbl_user_notification ON tbl_user_notification.notification_id = tbl_notification.id WHERE tbl_user_notification.user_id = '1';";
$q = $conn->query($sql);
$q->setFetchMode(PDO::FETCH_ASSOC);
if ($q->rowCount() > 0) {
$output['found'] = 0;
$output['notifications'] = null;
} else {
$sql = "SELECT * FROM `tbl_notification` LIMIT 5;";
$q = $conn->query($sql);
$q->setFetchMode(PDO::FETCH_ASSOC);
$output['found'] = $q->rowCount();
$tempArr = array();
$insertArray = "";
foreach ($q->fetchAll() as $row) {
array_push($tempArr, $row);
$sql1 = "INSERT INTO tbl_user_notification (user_id,notification_id) VALUES('1','" . $row['id'] . "')";
$q1 = $conn->query($sql1);
}
$output['notifications'] = $tempArr;
}
break;
default:
break;
}
header('Content-Type:application/json;');
echo json_encode($output);
}
?>
Notification.js:-
$(document).ready(function() {
var lastDisplayed = 0;
$('#gnrt_notfctn').on('click', function () {
$.getJSON('http://localhost/test/test/notifications/notification.php? action=show_last_five', function (data) {
var output = '';
if (data['found'] > 0) {
$.each(data['notifications'], function (i, v) {
if ($('#lastNotification').text() !== v['id']) {
var close_button = '';
if (v['close_button'] == 1) {
close_button = "<span style='position:absolute;right:25px;' data- dismiss='alert'><i class='fa fa-close'></i></span>";
} else {
close_button = "";
}
output = output + "<div class='alert alert-" + v['type'] + "'>" +
close_button + "<h4 class='alert_heading'><i class='fa fa-" + v['icon'] + "'> </i>
" + v['heading'] + "</h4>" +
"<p class='alert_body'>" + v['notification_text'] + "</p></div>";
$('#lastNotification').text(v['id']);
}
});
$('#show_notification').html(output);
}
});
});
setInterval(function () {
$('#gnrt_notfctn').click();
}, 3000);
});
php参考方案
以这样一种方式设计API,使其能够接受用户ID和上次收到的通知。
因此在查询中,请使用user_id和日期时间过滤通知表
例如:(考虑表中有数据时间字段)
SELECT * FROM tbl_notification INNER JOIN tbl_user_notification ON tbl_user_notification.notification_id = tbl_notification.id WHERE tbl_user_notification.user_id = '1' and tbl_notification.datetime>lastreceiveddatatime
希望这是有用的
将输入类型复选框关联到输入类型文本 - php我有一个问题,我需要将输入类型复选框与输入类型文本关联。情况如下:从数据库中提取数据。 PK数据是复选框的值。当复选框选择输入类型的文本时,您可以在其中输入特定数字。现在的问题是,选中所有类型的复选框输入文本都会被激活。我希望通过选择复选框输入,仅启用与复选框相关联的输入。我的HTML代码(此代码创建一个输入复选框,并为数据库中的每个记录输入文本,而我要激活…
php:是否有充分的理由引用所有数组键/索引? - php我正在遍历别人的代码,他们总是避免转义其数组键。例如:$ row_rsCatalogsItems [名称]代替$ row_rsCatalogsItems ['名称']因此,我不断地对自己接触的所有事物进行微小的更改,以应对这些惰性。但是现在我想知道这样做是否有很多好处。我得到它会在默认为字符串之前检查常量(我在处理常量时会讨厌php中的行为,因为即使未定义,…
为什么我的注册表单可以在除Firefox之外的所有浏览器中使用? - php在这里可用:http://syllableapp.com/test基本上,在Safari,Chrome,Opera,Webkit Nightly等中,表单可以完美地按预期工作。但是,在Firefox中,提交时只是...不执行任何操作。为什么是这样?这是我的JavaScript:$(document).ready(function() { $('in…
在单次点击甚至点击链接时创建不同的功能 - php我有3个链接,它们是学生的名字。第一次单击链接或奇数时间时,会出现另一个div,其中包含该学生的详细信息。在第二次或偶数时间单击同一链接时,我需要隐藏学生div。使用jquery的data()事件对我来说效果很好。我的要求是,如果我单击第一个学生链接,则会显示第一个学生的详细信息。如果单击第二个学生链接,则会显示第二个学生的详细信息。如果再次单击第一个链接,…
PHP数组可以这样做吗? - php可以说;我有一个$ friends数组,其中有2,000个不同的friendID号+我有一个带有10,000 bulletinID号的$ bulletins数组,该$ bulletins数组还将具有另一个值,该ID的用户ID是发布公告条目的用户现在可以获取所有具有与FriendsID数组中的userID匹配的userID的bulletinID号吗?甚至有可能…