【问题标题】:How to sort messages?如何对消息进行排序?
【发布时间】:2013-09-14 19:29:04
【问题描述】:

我是 PHP 新手。

我有一个简单的消息传递网站,用户在一个表中,另一个表中包含消息:

(date, from user, to users, message, primary key, subject).

首先,我不确定这是存储消息的正确方法,所以请告诉我。

我对消息的显示感到困惑。

我希望页面脚本:

  • 连接数据库
  • 验证用户身份
  • 浏览消息表中的所有消息(到此为止)
  • 通过 to users 字段,查看用户是否是其中之一(将其拆分为数组,它们都已被空格分隔)
  • 如果是,则检查是否有任何其他消息在其 to users 字段中具有相同的用户
    • 如果是,则将其与其他在其 to users 字段中具有相同用户的其他人分组(可能在多维数组的第二维中)
    • 否则将其放入一个新的“组”(具有多维数组的下一个第一维)

然后,我将只显示多维数组的第一维,单击时将在另一个位置显示其余消息(多维数组的所有第二维)。

如果有人可以通过一些代码或网站链接帮助我完成这些步骤,请这样做。

【问题讨论】:

  • 您的消息表包含“来自用户”和“给用户”(复数)。对于其中的第二个,如果您将对许多用户的引用放在一个列中,这将成为一个真正的问题。这里需要一个多对多表。
  • 更广泛地说,就您希望脚本执行的操作而言:您能用几句话概括一下吗?我认为您是在陈述一个可能的解决方案,而不是实际问题。例如,这可能试图“显示当前登录用户的收件箱”(即发送给他们的消息)。
  • 是的。我正在尝试对它们进行排序

标签: php mysql arrays sorting multidimensional-array


【解决方案1】:

为了扩展 Halfer 的答案,问题是您试图在“给用户”列中存储多个内容。所以你最终会得到像 toUsers = 5,24,242 这样的东西。这真的很难从数据库中解析出来。

相反,从该表中取出该列并创建一个名为“Message Recipients”的新表,该表具有“message id, user_receiving”。然后你可以有多行,这个表看起来像:

1、5

1、24

1, 242

...

【讨论】:

  • 我明白你在说什么,但它并不能完全回答我的问题
  • 确实,这是要走的路。然后,您可以使用JOINORDER BY 来获取您的收件箱,按照您想要的方式进行过滤和排序。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-02-27
  • 1970-01-01
  • 2017-10-11
  • 2012-01-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多