【发布时间】:2017-06-23 11:23:41
【问题描述】:
我有一个数据库,当插入它时应该在网页中创建一个通知。我在这里所做的是通过 ajax 进行轮询。我执行一个查询,该查询选择时间戳小于当前时间 3 秒的行。 这是我的代码- HTML 文件:
<html>
<head>
<title>Dashboard</title>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.3 /jquery.min.js"></script>
</head>
<body>
<div id="responsecontainer"></div>
<script type="text/javascript">
$( document ).ready(function() {
setInterval(ajaxcall, 500);
function ajaxcall() {
$.ajax({
type: "GET",
url: "maintdashsubmit.php",
dataType: "html", //expect html to be returned
success: function(response){
$("#responsecontainer").append(response);
}
});}
});
</script>
</body>
</html>
PHP 文件:
<?php
session_start();
$link = mysqli_connect("localhost", "root", "*****", "DMRC");
if (mysqli_connect_errno()) {
printf("Connect failed: %s\n", mysqli_connect_error());
exit();
}
$sql = "SELECT * FROM Ticket, Station, user_auth WHERE TIME(ticket_open_datetime) BETWEEN curtime()-3 AND curtime() AND Ticket.ticket_station_id = Station.station_id AND Ticket.ticket_open_emp_id = user_auth.emp_id AND Ticket.ticket_close_open='open" ;
$result = $link->query($sql);
if ($result->num_rows > 0) {
while($row = $result->fetch_assoc()){
echo "<tr><td style='width:15%''>".$row['ticket_id']."</td><td><table><tr><td>".$row['ticket_equipment']."</td></tr><tr><td>".$row['ticket_equipment_id']."</td></tr></table></td><td>".$row['station_name']."</td><td><table><tr><td>".$row['emp_firstname']." ".$row['emp_lastname']."</td></tr><tr><td> Sec:".$row['emp_section']."</td></tr><tr><td>".$row['emp_id']."</td></tr></table></td><td>".$row['ticket_close_open']."</td></tr>";
}
}
$link->close();
?>
这为我提供了我想查看的最新通知。但只要保持在 0.5 秒的时间限制内,它就会显示多次。 我读到我可以在数据库中保留一列,如果通知已显示,则可以设置为 1,如果没有,则设置为 0。
但我有一个疑问。假设这个通知必须被许多用户接收。如果向一个用户显示通知会在另一个用户查看之前设置列条目 1 怎么办?这一切都太混乱了。如果有人可以建议一种方法?
【问题讨论】:
-
如果您想跟踪每个用户的通知显示,请跟踪每个用户。在用户和通知之间创建一个多对多表,用于跟踪哪些用户查看了哪些通知。
-
用 user_id 将它们存储在数据库中,并将当前用户的状态更新为 1,简单
-
但是如果我的用户数达到 100 个,那会不会太多条目?
-
@AkritiAnand:数据库能够存储大量数据。 “数百条记录”与“无记录”在统计上无法区分。
-
@AkritiAnand David 是对的,要跟踪很多东西,你必须把它们保存在数据库中
标签: javascript php html mysql ajax