【问题标题】:Setting up a MySQL table to track user link clicks设置 MySQL 表以跟踪用户链接点击
【发布时间】:2012-05-04 04:34:40
【问题描述】:

这是我几天前发布的一个问题的后续。

基本上,我有一个包含六个链接的网站。为了访问该站点,用户必须使用 LDAP 身份验证登录。当他们这样做时,我会获取他们的一些帐户凭据(用户名、名字、姓氏),并将其存储在 PHP $_SESSION 变量中。

这行得通;用户可以登录,会话数据存储成功。

现在,我想设置一种方法来跟踪哪些用户点击了哪些链接。基本上只是在他们点击链接的数据库中存储一个时间戳。我希望能够查看谁(或没有)点击了每个链接,以及何时点击。

我可以在一个表中执行此操作吗/这是个坏主意吗?我正在考虑这样设置表格:

TABLE(每个项目符号表示一列)

  • 自动递增 ID
  • 用户帐号名:abc1234
  • 用户帐户名:John
  • 链接 1:上次访问时间为 2012 年 5 月 2 日下午 4:15
  • 链接 2:空
  • 链接 3:空
  • 链接 4:上次访问时间为 2012 年 5 月 1 日下午 2:20
  • 链接 5:空
  • 链接 6:空

基本上上面会说“约翰”只点击了第一个和第四个链接。其余的都是空的,因为他从未访问过它们。如果他再次单击#1,它将被更新的日期/时间覆盖。

我可以在一个表中执行此操作吗?还是会造成并发症?我觉得我最难的事情是在添加信息之前检查用户是否已经在数据库中(即,如果约翰第二次登录,则不会为他创建一个全新的行)

感谢您的帮助!

【问题讨论】:

  • 您确定您的网站绝对不会有超过或少于 6 个链接吗?如果没有,你有一部分答案...
  • @RaphaëlAlthaus 您好,感谢您的意见!你说得对,我不知道这是事实。我正在为一个大学页面这样做,他们说这将是 6 个链接,但我敢打赌它肯定会在未来发生变化。

标签: php mysql sql database


【解决方案1】:

那是个坏主意。如果你想有第七个链接怎么办?如果用户格式发生变化怎么办?

此解决方案需要 3 个表:

  • 用户 - 包含用户数据(和用户 ID)。
  • 链接 - 包含链接数据(和链接 ID)。
  • 点击次数 - 用户和链接之间的多对多关系。

第三个表格如下所示:

user_id | link_id | timestamp
-----------------------------
1       | 2       | ...
2       | 2       | ...
1       | 3       | ...
............

【讨论】:

  • 您好,感谢您的回复! :-) 所以在“用户”表中,我会在一列中有自动递增的 ID,在第二列中有用户名。 “链接”表在第一列中具有自动递增的 ID,在第二列中具有链接名称(视频 1、视频 2 等)。但是,在组装“Clicks”表时,我感到很困惑。如何从其他两个表中提取数据?我知道这是非常基本的,但 MySQL 不是我的强项。 :-) 非常感谢!
  • 好吧,当用户登录时,用户 ID 会从数据库中获取并存储在会话中。当他点击一个链接时,他实际上提交了一个 GET 表单(即 www.example.com/index.php?linkid=1),这是您获取链接 ID 的地方。戳记是当前时间。 :)
  • @TomC:然后,您可以将查询的结果加入到第三个表中,从第一个表到第二个表,为您提供人类可读的报告。
【解决方案2】:

为什么不直接拥有

increment_ID
Account_ID
Link_URL
Timestamp

然后只需为每次点击插入一条新记录。您也不需要管理链接,因为您将存储整个 URL 路径

【讨论】:

  • 嗨骨头!非常感谢您的投入。不过我对你的描述有点困惑。您的示例是否在单个表中?
  • @bones:如果链接 URL 发生变化,您的报告就会过时。
  • 您只需要在每个页面的顶部插入点击次数(account_id、link_url、click_timestamp)值($_SESSION['account_id']、"http://$_SERVER[HTTP_HOST]$ _SERVER[REQUEST_URI]", now())
  • 不是真的,因为他只是在寻找最后一次点击,他会知道他在寻找什么网址。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-03-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多