允许用户使用mysql为页面(ID,节点等)添加书签的最有效方法是什么?

时间:2013-08-05 13:39:50

标签: php mysql arrays

我的网站有几千个事件,由mysql数据库驱动的简单PHP页面。

我想允许我的用户“加入书签”或“保存”或“喜欢”这些对他们有趣的事件。可能只是一个简单的AJAX切换,它将从mysql中获取该事件“ID”字段并将其添加到他们的列表中。

在不杀死我的数据库的情况下,最好的方法是什么?我担心的是,当用户浏览我网站上的事件列表时,我需要在事件标题旁边显示一个小图标,该图标已经标记为“已保存”或未标记为“已保存”。我担心如果我做得不对,我会在每次加载页面时将我的数据库敲击25次。

对这个问题的任何见解?

编辑:另外,存储用户在mysql中保存的ID列表的最佳方法是什么?创建一个新表?我可以将它们放在现有用户表的字段中吗?

1 个答案:

答案 0 :(得分:1)

您可以先查询用户最喜欢的项目,然后在呈现项目表时,如果项目被收藏,请检查此列表。

这样,只需两次查询即可完成。

这是一些伪代码:

$user_favorite_ids = getUserFavoriteItems(); // array of IDs

$page_entries = getPageEntries(); // array of objects (DB rows)

foreach(page_entries as $entry) {

   // print table row

   if(in_array($entry->id, $user_favorite_ids)) {
       // show as "favorite"
   }
}

但是,如果您的用户有数百或数千个喜爱的项目,这将不会非常有效。