1

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

我想让我的用户“收藏”或“保存”或“收藏”他们认为有趣的事件。可能只是一个简单的 AJAX 切换,它将从 mysql 中获取该事件“ID”字段并将其添加到他们的列表中。

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

对这个问题有任何见解吗?

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

4

1 回答 1

2

您可以先查询用户最喜欢的项目是什么,然后在呈现项目表时,检查该项目是否被收藏。

这样,这一切都在两个查询中完成。

这是一些伪代码:

$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"
   }
}

但是,如果您的用户有数百或数千个最喜欢的项目,这将不是很有效。

于 2013-08-05T13:43:27.550 回答