Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何通过php和ajax创建通知?_Javascript_Php_Html_Mysql_Ajax - Fatal编程技术网

Javascript 如何通过php和ajax创建通知?

Javascript 如何通过php和ajax创建通知?,javascript,php,html,mysql,ajax,Javascript,Php,Html,Mysql,Ajax,我有一个数据库,当插入时,应该在网页中创建一个通知。我在这里做的是通过ajax进行轮询。我执行一个查询,该查询选择时间戳距离当前时间小于3秒的行。 这是我的密码- HTML文件: 仪表板 $(文档).ready(函数(){ 设置间隔(ajaxcall,500); 函数ajaxcall(){ $.ajax({ 键入:“获取”, url:“maintdashsubmit.php”, 数据类型:“html”,//希望返回html 成功:功能(响应){ $(“#responsecontainer”)。

我有一个数据库,当插入时,应该在网页中创建一个通知。我在这里做的是通过ajax进行轮询。我执行一个查询,该查询选择时间戳距离当前时间小于3秒的行。 这是我的密码- HTML文件:


仪表板
$(文档).ready(函数(){
设置间隔(ajaxcall,500);
函数ajaxcall(){
$.ajax({
键入:“获取”,
url:“maintdashsubmit.php”,
数据类型:“html”,//希望返回html
成功:功能(响应){
$(“#responsecontainer”)。追加(响应);
}
});}
});
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,该怎么办?这太令人困惑了。如果有人能建议一种方法

如果向一个用户显示通知会在另一个用户查看该通知之前设置列条目1,该怎么办

听起来你想要的是一种“多对多”的关系。假设您有用于用户和通知的表:

Users
----------
ID
Username
etc.

Notifications
----------
ID
MessageBody
etc.
如果每个通知可以被多个用户看到,并且每个用户可以看到多个通知,并且您希望跟踪有关该交互的某些信息(用户是否看到通知),那么您需要在它们之间建立一个链接表。大概是这样的:

UserNotifications
----------
UserID
NotificationID
HasBeenSeen
etc.
(您可以为该表提供自己的
ID
,也可以将
UserID
NotificationID
组合用作复合主键。任何一种方法都有效,由您决定。)

对于多对多关系,您需要在相关的两个实体之间有这样一个“链接表”。在该表中,您将跟踪有关关系本身的信息,在本例中,这些信息将包括用户是否已看到通知

如果您希望此表随着时间的推移显著增长,那么可以通过多种方式稍微修改该方法。例如,您是否需要永久保留这些事物的历史?可能在查看记录后删除记录?通知本身会被删除吗?如果是这样,您还将删除这些链接记录。或者,该表不存储用户是否看到通知,而是存储用户仍然需要看到的通知。如图所示,记录被删除


您可以采取多种方法来解决整个问题。但要解决此处提出的特定问题,您需要跟踪信息的是一个多对多链接表。

如果要跟踪每个用户的通知显示,请跟踪每个用户的通知显示。在用户和通知之间创建一个多对多表,跟踪哪些用户看到了哪些通知。将它们存储在具有用户id的数据库中,并将仅当前用户的状态更新为1,简单但如果我的用户运行到100,这不是太多条目的吗?@AkritiAnand:数据库能够存储大量数据。“数百条记录”在统计上与“没有记录”是无法区分的。@AkritiAnand David是对的,要跟踪很多事情,你必须保存它们,这就是数据库
UserNotifications
----------
UserID
NotificationID
HasBeenSeen
etc.