Php Tablesorter在数据库更改/更新时重新加载tbody或仅加载该行
我见过很多例子,当用户想要在表中添加或删除一行时触发更新,但我想看看如果数据库中有更改,它是否可以重新加载整行或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,可以绕过这个问题,然后也可以更新它们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
非常感谢您阅读本文并提供任何帮助。选项1。来回发送的数据更少。较少渲染 这就是我要做的: 使用
JS
setTimeout函数和AJAX
检查我的服务器端脚本/servlet/任何东西。如果任何一行与SQL
查询匹配,我会通过JSON
将它们发送回来
返回JSON后,我将解析每个
JSON
对象(表行),并用新数据替换相应的TR
。使用WebSocket和/或服务器推送。
如果您有1000个客户端,则为0.1*1000=每秒100个请求。
我不确定你的服务器端会不会同意
使用WebSocket或服务器推送时,在数据库更新事件(更新数据库的人应该抛出一个事件)上,服务器向客户端发送:
- 数据库行的顺序(它们都有唯一的ID)
- 已更改的行
- 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并替换它或用新的数据更新它?让我们来看看