gpt4 book ai didi

php - 为事件源网站存储和检索用户列表的有效方法

转载 作者:搜寻专家 更新时间:2023-10-30 23:47:01 25 4
gpt4 key购买 nike

我目前正在开发一个事件源网站。此处相关概念的一部分:

  • Feed 上显示了多个事件,其中包含基本详细信息和“开始”按钮
  • 单击“开始”按钮会将用户添加到事件列表中。再次单击将撤消该操作。

现在,我有一个事件表,它存储有关事件的详细信息并有一个going_count 列。另一个表 event_userlist 有两列:

event_id_count (PRIMARY KEY) and user_id

当用户点击事件的进行按钮时,将从事件表中检索该事件的going_count,增加 1,与 event_id 连接(从而形成类似 4p6ZDpPW9_10 的东西)并存储在变量 $eid_count 中。

用户 ID 从 session 中检索并存储在变量 $uid 中。然后将 $eid_count$uid 插入到 event_userlist 表的 event_id_countuser_id 列中 。成功插入后,我会更新 going_count。

首先我想知道我是否可以进行更改以提高流程的效率和可扩展性。


其次,在提要上显示事件时,我需要检查用户是否已经在事件的去向列表中,如果是,则显示取消按钮。 解决此问题的最佳方法是什么?

现在我正计划使用以下查询检索每个事件的用户列表:

SELECT user_id FROM event_userlist WHERE event_id_count LIKE '$eid%'

然后检查当前用户是否在该查询的结果中。这是可扩展的吗?

最佳答案

我建议稍微重组您的数据存储,而不是将计数混入实际的存储机制中。

如果没问题,我会使用表名 eventsattendantsusers,每个表都有一个 id(主键),以及 attendantsevent_id + user_id。这些是我示例中的最低限度,表格当然可以有额外的字段,尽管对于 attendants 来说不是必需的:

+----------+---------------+----------+
| events | attendants | users |
+----------+---------------+----------+
| ID (key) | ID (key) | ID (key) |
| name | user_id (fk) | name |
| | event_id (fk) | |
+----------+---------------+----------+

仅供引用,这是一个 N:M 关系。

如果用户参加(点击“going”按钮)某个事件,将在 attendants 中创建一个具有指定 user_id 的新行(匹配 参加的用户ID)和指定的event_id(匹配用户参加的事件的ID)。

这样特定用户可以参加任何事件,每个事件可以有任意数量的参加用户。

然后您可以快速执行各种操作,例如:

统计某个事件的出席人数(按事件ID,在下面的示例中为32):

SELECT COUNT(*) AS `count` FROM `attendants` WHERE event_id=32;

获取参加特定事件的用户列表(按事件 ID):

SELECT u.ID, u.name FROM `users` AS u INNER JOIN `attendants` AS a ON u.ID = a.user_id WHERE a.event_id=32;

这样的例子还在继续。简而言之,您始终可以分辨出给定用户正在参加哪些事件,以及哪些用户正在参加某个事件。由此,您可以轻松判断“当前”用户是否参加了某个事件,计算参加人数等等...


更新

如评论中所述,attendantsID 可以选择跳过,因为 event_iduser_id补一个compound primary key在这种情况下。

关于php - 为事件源网站存储和检索用户列表的有效方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27357884/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com