ユーザーが 1 ~ 5 のスケールで画像をランク付けできる PHP ランキング システムを構築しようとしています。
画像のランク付け方法に応じて、ランキング (ランク番号) での位置が決まります。ランクは、ユーザーから受け取るさまざまな評価に応じて変更する必要があります。
その一例がランキングシステムです。http://www.newgrounds.com/portal/view/601966 (右側、ページ下部)
これを達成するのに役立つ情報を探しているだけです。
ありがとう。
ユーザーが 1 ~ 5 のスケールで画像をランク付けできる PHP ランキング システムを構築しようとしています。
画像のランク付け方法に応じて、ランキング (ランク番号) での位置が決まります。ランクは、ユーザーから受け取るさまざまな評価に応じて変更する必要があります。
その一例がランキングシステムです。http://www.newgrounds.com/portal/view/601966 (右側、ページ下部)
これを達成するのに役立つ情報を探しているだけです。
ありがとう。
votes というテーブルを作成し、それを images テーブルに関連付けます。
投票:
投票_id INT(11) PK
ユーザー ID INT(11)
image_id INT(11)
スコア TINYINT(1)
以下に、知っておく必要のある事項をいくつか示します。
データベースが必要です。データベースでは、ランク付けする各画像を保存する必要があります。これは、「画像」と呼ばれるテーブルで行います。このテーブルでは、各イメージに「自動インクリメント」主キーを指定します。(これは、データベースに追加する新しい行ごとに、主キーが前の行から自動的に +1 になることを意味します)。これは、各画像の横に一意の行番号があり、その特定の行を識別することを意味します。この列を呼び出しますid
。(列の他の表で参照しますimage_id
)。
次に、「votes」というテーブルが必要です。このテーブルには、必要なあらゆる種類の情報を格納できますが、格納する必要があるのは、"images" テーブルからの一意の画像番号と、誰かが投じた投票の値だけです。次のような結果になります。
image_id | vote_value
1 | 3
2 | 5
1 | 3
4 | 1
4 | 3
これで、この情報を照会してリーダーボードを取得できます。クエリは次のようになります。
SELECT image_id, SUM(vote_value) AS rank FROM votes GROUP BY image_id ORDER_BY rank;
これにより、ランク順に並べられた「image_id」のリストが表示されます(つまり、すべての投票の合計)。
次に、画像テーブルに戻り、その画像の情報をそのテーブルから取得できます。
SELECT name, url FROM images WHERE id=#image_id we got above#;
これがお役に立てば幸いです。:) 行き詰まった場合は、戻ってもう一度質問してください。