【问题标题】:How do you dynamically display user profiles?您如何动态显示用户配置文件?
【发布时间】:2013-10-08 23:03:34
【问题描述】:

这很可能以前有人问过,但我找不到。

我正在构建一个页面,供用户浏览其他用户的个人资料。我目前的计划是按照上次显示时间和上次在线时间的顺序显示配置文件。

我几乎给数据库中的每个项目一个 last_displayed 属性,其中包含上次显示配置文件的时间戳。显示配置文件后,时间戳将被更新,并且在显示具有较旧 last_displayed 时间戳的其他配置文件之前不会显示。

同时会有一个 last_online 属性,其中包含配置文件上次在线时间的时间戳。这是为了在显示老用户之前显示最近在线的用户。

现在,当实际查询数据库以显示要显示的配置文件时,我会扩大 last_displayed 和 last_online 的范围,直到找到足够的配置文件。

我认为此功能与约会网站的功能没有什么不同。

所以我的问题是:有没有更好的方法来动态显示用户配置文件?

感谢您的阅读!

【问题讨论】:

  • 我对您的数据库设计没有任何改进。但是,为什么要扩大范围直到找到足够的配置文件? ORDER BY last_online LIMIT $num 不应该做这项工作吗?
  • @TheWolf 好吧,我希望它由 last_online 和 last_displayed 订购。这样,如果配置文件最近是 last_online 但很久以前是 last_displayed,则它应该显示在最近 last_online 和最近 last_displayed 的配置文件之前。我希望这是有道理的。
  • 您是否开发了一个公式来确定用户显示的确切顺序?如果这个公式不是太复杂,你也许可以让 MySQL 来完成选择用户和排序的工作。
  • 现在公式涉及增加一位数,这直接增加了 last_online 和 last_displayed 的范围。这些范围增加的速度仍然需要一些调整,但功能是存在的。该范围循环并增加,直到找到足够的配置文件。不过,我会研究一下 mySQL 是否可以为我做更多的工作。感谢您的意见!

标签: php mysql sql database yii


【解决方案1】:

在这里放一段 SQL 或链接到 http://sqlfiddle.com/ — 主要是关于这个。

你不能在这里使用任何范围宽——你应该找到一些令人满意的列/顺序组合来拥有简单的ORDER BY $columns LIMIT $num

在此架构中,您可以在 $columns 中使用类似:column1 DESC, column2 DESC 或反之亦然 或者可能是它们的组合,例如:IFNULL(column1, column2)MAX(column1, column2)

朝这个方向走。当您找到正确的解决方案时 - 在此处发布。

ps:建议你把这里的yii标签去掉。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-02-16
    • 1970-01-01
    • 1970-01-01
    • 2018-04-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多