- ベストアンサー
PHPでいいね機能の設計
- PHPでいいね機能を実装するための設計方法について教えてください
- 投稿サイトでのいいね機能の設計についてアドバイスをお願いします
- PHPを使用していいね機能を作成する方法を教えてください
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
とりあえず、FBのいいねボタンの仕様は知らないけど、ぱっと思いつくのは以下の様な感じ。 必要なテーブルが三個。 ユーザーテーブルと記事テーブルと、いいねカウントテーブル。 いいねカウントテーブルは ユーザーIDと記事IDだけのシンプルなテーブル。 ユーザーが その記事を開いた時点で このテーブルを参照し、「いいね」ボタンにするか「キャンセル」ボタンにするか決める。 Ajaxでやるなら その都度だけど。 んで、記事に対して いいねが押された時に このテーブルに追加。キャンセルだったら 当該レコードを削除。 その流れでカウントを集計して、記事テーブルの方にもカウント数を反映。 こんな感じかなと思います。 多分、言ってることは agunuzさんと一緒。
その他の回答 (2)
- muuming2001
- ベストアンサー率23% (202/847)
>>Ajaxでの処理の仕方 は実装方法でしょうけど >>いいねを付けたユーザーとの結びつけ も不明であれば、機能自体がわかってないのでは? どういうものを作らないと行けないのか?どうしたいのか?をまずはっきりさせてはいかがでしょうか?
お礼
ご回答ありがとうございます。 再度勉強し、挑戦したいと思います。
補足
説明不足申し訳ありません。 機能は書いた通りです。 ユーザーとの結びつけというのは、 私が最初に思いついた打開策が、 menberとpostのテーブルを作り、postのフィールドにlike_countを作ることでした。 しかしそれでは likeの数は増えても、どのユーザーがlikeしたかがそのpostテーブルでは管理出来ないと気付きました。 なので、結果的に「不明」と、そういう意味でした。 分かりづらくて申し訳ありませんでした。
- agunuz
- ベストアンサー率65% (288/438)
ボタンを押したユーザIDと対象の投稿のIDでレコードを作成する必要があります。一度ボタンを押したら2回押されないようにしたり、押したものを取り消すためです。ユーザIDと投稿IDでレコードを検索します(両方をキーにして、押された日時をデータとして持ってもいいでしょう)。 (例) 「いいね」を押す → レコードがない(まだ押されていない) → レコード作成し、投稿データのいいねカウントを+1する という流れになります。もしすでに押されていたら「そもそもいいねボタンを有効にしない」「押されても処理をしない」ということになります。 キャンセルのときは、「キャンセル」を押す → レコードがある(いいねが押されている) → レコード削除し、投稿データのいいねカウントを-1する となります。当然まだ押されていなかったら「そもそもキャンセルボタンを表示しない」「押されても処理をしない」です。 なお、最初からAjaxで作らずに普通にPOSTして処理することをまずは考えてください。それが完成してからAjax化しても遅くはありません。それこそ某いいねボタンのようにボタン部分だけインラインフレームというのもアリですし(苦笑
お礼
ご回答ありがとうございます。 再度勉強し、挑戦したいと思います。
補足
ご回答ありがとうございます。 しかし、申し訳ありません。 わたしの今の知識では正直理解出来ませんでした。 お時間あるときで結構ですのね、より詳細に書いていただける非常に助かります。 大変恐縮とは思いますが、宜しくお願い申し上げます。
お礼
すみません、気付いておりませんでした。 申し少し勉強して、詳細に実施したいと思います。 ありがとうございます。