【问题标题】:how to maintain data with respect to every user?如何维护每个用户的数据?
【发布时间】:2014-10-05 10:46:43
【问题描述】:

所以所有的编码忍者,我最近开始探索 Web 开发的世界(我应该说它真是太棒了)。我遇到了问题。

我在做什么:我的 HTML 看起来像这样

<ul data-role="listview" > <!-- List items come here --> </ul>

这些列表项是通过对 PHP 函数的 AJAX 调用动态生成的(我正在考虑使用分页,因为 UL 中的数据可能会增长)。

到目前为止,我使用的是单个用户场景(一次只有一个用户访问该网站)。数据在我看来还不错。

问题现在我正在考虑增加用户的存在。许多用户同时登录。我会遇到这样的情况:

用户 A :在 DB 中生成了一个具有当前场景的 UL(比如说 10 行

用户 B 进入并刷新我的 UL 并消失了!用户 A 将不再拥有他/她正在使用的数据集,现在他有 12 行(DB 表还有 2 次插入)

问题:如果我问了一个愚蠢的问题,请原谅我。我如何克服这种访问相同数据但不影响其他用户的多用户场景?

如果给出的解决方案可以被像我这样的初学者轻松消化,那将非常有帮助:-)

编辑: 让我举个例子:

用户 A 登录: 目前我在数据库中有 5 行,例如

  • 哈姆雷特
  • 麦克白
  • 布鲁图斯
  • 凯撒
  • 威廉

所以我的 UL 看起来像这样:

<ul data-role="listview" id="authors"> 
   <li>Hamlet</li>
   <li>Macbeth</li>
   <li>Brutus</li>
   <li>Caesar</li>
   <li>William</li> 
</ul>

现在用户 B 登录并且在 DB 中有一个额外的插入

  • 哈姆雷特
  • 麦克白
  • 布鲁图斯
  • 凯撒
  • 威廉
  • 安东尼奥

所以我的 UL 应该看起来 (仅适用于 User B ,不适用于 User A )

<ul data-role="listview" id="authors"> 
   <li>Hamlet</li>
   <li>Macbeth</li>
   <li>Brutus</li>
   <li>Caesar</li>
   <li>William</li> 
   <li>Antonio</li> 
</ul>

【问题讨论】:

  • 它看起来更像是协议问题而不是程序问题。您应该说明当多个用户同时插入/删除/修改行时会发生什么,然后实施解决方案。此外,该协议将特定于您的域。
  • @clapas :它唯一的从数据库中选择操作。请检查我的编辑。提供了一个例子
  • 我已经明白你的意思了。那么问题是什么,您希望解决方案是什么?
  • 问题是我想不出解决方案是什么。它会在表中插入用户条目吗? .它会为特定用户生成 XML(只是一个疯狂的猜测)吗?

标签: php jquery data-synchronization multi-user


【解决方案1】:

我的最佳猜测:在您的表中添加一个包含数据所属用户 ID 的数据列

然后从表中选择用户 ID 与请求数据的当前用户匹配的数据

+--------+------+   +--------+---------+--------+
| UserID | Name |   | ItemID | Content | UserID | 
+--------+------+   +--------+---------+--------+
| 1      | John |   | 123    | Lorem.. | 2      | <-- This row belongs to Bill 
| 2      | Bill |   | 124    | Lipsu.. | 1      | <-- This row belongs to John
| 3      | etc. |   +--------+---------+--------+
+--------+------+

-- This query would select data belonging to the user Bill
SELECT `Content` FROM `yourdatatable` WHERE `UserID` = 2

【讨论】:

  • 我认为这是不可能的,将一行限定为特定用户不会解决问题,因为任何时候任何用户都会看到表格的最后一个快照,除非他点击刷新按钮.根据您的解决方案,用户 1 只会看到“124 | Lipsu..”,而用户 2 将看到“123 | Lorem ..”(但理想情况下,用户 2 应该看到两个 ItemID,即 123,124。因为他请求了最新快照,而用户 1 是旧数据仍然可以)。我错了就改正!
  • 此外,应用程序的数据库端不在我手中(另一个团队管理它),我想问他们进行任何数据库端修改是不可能的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-06-18
  • 2018-10-27
  • 1970-01-01
  • 2017-11-18
  • 2011-05-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多