2012-05-11 40 views
17

我目前正在研究一个移动应用程序,它可以让您向朋友询问最爱,它是一个HTML5前端和一个PHP后端。我坚持建立一个通知系统的最好方法是什么,更重要的是数据库模式比实际的代码本身。在PHP中构建多通知系统的最佳方式

移动应用流程如下:

  • 用户请求一个忙
  • 用户可以选择;通知所有的朋友,最喜欢的通知朋友或notifdy的closeby朋友
  • 根据用户选择了什么,人们被告知

什么是PHP和MySQL做到这一点的最好方法是什么?我并不是真的要求任何人写我的PHP代码,而是映射出最理想的MySQL表和字段模式,而不是像我目前所坚持的那样。在此先感谢您的帮助。

回答

29

您可以创建一个通知表,例如:

from_user | to_user | notification | seen 

,然后每当要通知用户时,只需添加一条记录与所需的信息,并设置seen0/false

然后当用户读取通知时,您将该参数设置为1/true

例子:

from_user | to_user | notification | seen 
    -   -   -   - 

用户John通知用户Jeff:

from_user | to_user | notification | seen 
    john  jeff  whatever.. 0 

用户Jeff阅读通知:

from_user | to_user | notification | seen 
    john  jeff  whatever.. 1 
+0

因此,基本上如果用户选择通知最喜欢的朋友,我首先会做一个查询来获取当前用户收藏夹的用户ID,然后对每个ID的通知表进行批量插入?这似乎够合理。像这样的东西原本在我脑海中浮现,但我想也许还有另一种方式。这似乎是合乎逻辑的事情。 –

+0

@道恩,是的。或者你可以做一个子查询(http://dev.mysql.com/doc/refman/5.5/en/subqueries.html)。无论如何,这似乎是最符合逻辑和干净的方式。我还会删除所有超过7-14天的通知来优化所有内容,但这取决于您。 – Shoe

+2

简单但可靠的方法+1 –

4

为什么不只是列出了一个名为表中的所有通知“通知”

id | user_id | from_user_id | notification 
  • ID =通知ID
  • USER_ID =谁是通知?
  • from_user_id =谁发送了通知?
  • 通知=消息

然后为伪代码:

// Create a notification from User A to User B 
$this->db->insert ('notifications', array ('user_id' => $friends_id, 'from_user_id' => $current_user_id, 'notification' => $message)); 

// The meanwhile, on your home page or somewhere, wherever you want to display notifications 
$this->db->where ('user_id', $current_user_id) 
$notifications = $this->db->get ('user_id'); 
foreach ($notifications as $notification) 
{ 
     // Display the notification as needed 
     // Optionally delete the notification as it is displayed if it is a "one off" alert only 
} 
+0

感谢您的配偶。我首先发布了杰弗里的答案,但我很感激你花时间回复,所以我投了票。 –

4

扩展杰弗里答:

id | from_user | to_user | notification | seen | timestamp 
-   -   -   -   -   - 

时间戳将帮助您确定在哪个时刻发生的特定通知。您还可以通过扩展脚本来创建时间片刻timeago.jsLivestamp.js

它还可以帮助您创建通知时间表,并且通知维护将更加简单。