1

私の Web サイトには、数千のイベントと、mysql データベースによって駆動される単純な PHP ページがあります。

ユーザーが興味のあるイベントを「ブックマーク」、「保存」、または「お気に入り」できるようにしたいと考えています。おそらく、そのイベントの「ID」フィールドをmysqlから取得してリストに追加する単純なAJAXトグルです。

DBを殺さずにこれを行う最善の方法は何ですか? 私の懸念は、ユーザーが私の Web サイトでイベントのリストを閲覧しているときに、既に「保存済み」としてマークされているかどうかにかかわらず、イベント タイトルの横に小さなアイコンを表示する必要があることです。正しく行わないと、ページの読み込みごとにDBを25回叩くだけになるのではないかと心配しています。

この問題に関する洞察はありますか?

編集: また、ユーザーが mysql に保存した ID のリストを保存する最良の方法は何ですか? 新しいテーブルを作成しますか? それらを既存の users テーブルのフィールドに入れることはできますか?

4

1 に答える 1

2

最初に、ユーザーのお気に入りのアイテムは何かをクエリし、アイテムのテーブルをレンダリングするときに、アイテムがお気に入りに登録されているかどうかをこのリストと照合できます。

そうすれば、たった 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 に答える