Php Tablesorter在数据库更改/更新时重新加载tbody或仅加载该行

Php Tablesorter在数据库更改/更新时重新加载tbody或仅加载该行,php,javascript,ajax,jquery,tablesorter,Php,Javascript,Ajax,Jquery,Tablesorter,我见过很多例子,当用户想要在表中添加或删除一行时触发更新,但我想看看如果数据库中有更改,它是否可以重新加载整行或tbody 这就是我想做的,请让我知道这是否是一个好主意 JAVASCRIPT和PHP中的设置: 1。当页面第一次加载时,脚本将转到一个(.PHP)页面,该页面将显示最新更新(例如:'2013-07-18 10:37:29')。PHP页面将转到数据库(MySQL)并获取最新更新并显示它)此最新更新信息(日期/时间)将保存在一个VAR中,以供以后使用 2.添加一个计时器,该计时器将pin

我见过很多例子,当用户想要在表中添加或删除一行时触发更新,但我想看看如果数据库中有更改,它是否可以重新加载整行或tbody

这就是我想做的,请让我知道这是否是一个好主意

JAVASCRIPT和PHP中的设置:

1。当页面第一次加载时,脚本将转到一个(.PHP)页面,该页面将显示最新更新(例如:'2013-07-18 10:37:29')。PHP页面将转到数据库(MySQL)并获取最新更新并显示它)此最新更新信息(日期/时间)将保存在一个VAR中,以供以后使用

2.添加一个计时器,该计时器将ping同一个(.PHP)页面,并将其lastUpdate与首次加载页面时得到的初始lastUpdate进行比较

3。我们将每x秒(可能10秒)持续ping一次,以嗅探数据库中最近更新的更改

4.(比较):如果初始lastUpdate值小于我们刚从数据库获得的值,则这意味着数据库的内容已更改,它将执行两种可能的操作之一

从这一点上讲,我想做的是:

选项1:仅删除旧行并用更新的行替换。 每一行都有一个唯一的ID,所以javascript也可以获取这个ID,然后只更新表中的那一行

选项2:删除当前Tbody,然后用新数据重新加载整个Tbody

该表有很多行/列,并使用图像、HREF等。。。因此,每一行都是一个沉重的行,这就是为什么我希望尽可能使用选项1,,但我不知道如何完成最后一部分

(与聊天程序不同)只要我知道数据库中更新的ID,行的顺序就不必正确

假设我们有一个通讯簿,用户可以编辑/更新、添加、删除联系人和联系人信息。,现在我只想扫描更改,当发现更改时,将该行的ID和数据从数据库发送到表中通过ID匹配的行,然后更新或删除旧行并用新行替换,但是如果在数据库中找不到该id,则从表中删除该id,因为它不再在数据库中

所以我遇到的唯一问题是,不止一个用户同时进行了更改(比如在同一秒),然后只显示一个更新。但我认为,通过检查数据库中是否有任何其他具有确切日期/时间的不同ID,以及是否有其他ID,可以绕过这个问题,然后也可以更新它们


非常感谢您阅读本文并提供任何帮助。

选项1。来回发送的数据更少。较少渲染

这就是我要做的:

使用
JS
setTimeout函数和
AJAX
检查我的服务器端脚本/servlet/任何东西。如果任何一行与
SQL
查询匹配,我会通过
JSON
将它们发送回来


返回JSON后,我将解析每个
JSON
对象(表行),并用新数据替换相应的
TR

使用WebSocket和/或服务器推送。 如果您有1000个客户端,则为0.1*1000=每秒100个请求。 我不确定你的服务器端会不会同意

使用WebSocket或服务器推送时,在数据库更新事件(更新数据库的人应该抛出一个事件)上,服务器向客户端发送:

  • 数据库行的顺序(它们都有唯一的ID)
  • 已更改的行
最好使用与PHP不同的东西来更新客户端。例如,Java servlet。也许,只是为了更新客户端的db行,我的意思是,您可以保留初始PHP页面

答复@compcobalt: 简化后,您可以通过WebSocket接收两种数据类型

  • JSO编码阵列
  • 包含表行的XML文档
这是数组:
[47,271001,36,4833,5,98478,…]
。数组按正确顺序包含数据库行的所有ID。正确的顺序可能是,e。g、 ,数据库中行的顺序。javascript现在立即修改html表以符合该顺序。即使以前有第26行,而现在数组中没有这样的行,javascript也会删除它

<tr data-id="47">...</tr><tr data-id="27">...</tr><tr data-id="1001">...</tr>
。。。。。。。。。
即使JS对第1001行一无所知,或者第27行已经更新。 然后,它获取XML文档(也可以是JSON,或者任何您喜欢的格式)并对其进行解析

在这里,它获取更新的第27行和新行1001的内容,并用内容填充表行


然后,开始等待新的服务器推送。

是的,但我不知道如何通过这一部分,我甚至无法让选项2工作;我一直在尝试触发$(#tablesorter demo”).trigger(“更新”);在每次更改中,它似乎都不起作用,看起来好像它重新加载了整个tbody,但没有显示更改。@也许您降低了一两级?例如,用你的双手编写整个JS代码?jQuery在这里的位置是正确的,当然,但是您可以做一些更有趣的事情,而不是让一些bs插件工作。而且整个JS会更快;)@我的意思是,如果您将从服务器收到ID订单,那么您自己编写表更新代码就没有那么困难了。首先,插入新的TR并对现有的进行排序,然后,更新它们。@user1990577只是为了确保我理解:我从已更改的数据库中获取ID,然后如何在表中找到现有ID并替换它或用新的数据更新它?让我们来看看