0

作成された投稿に人々がコメントを残すことができるニュース/ブログのようなサイトを作成しています。ログインしたユーザーは、コメントに高評価または低評価を付けることができます。親指をクリックした瞬間に正常に動作し、ajax を使用してカウントをデータベースに追加し、数値を更新します。また、人が親指を再度クリックすることもできなくなりますが、f5 を押してページを更新すると、もう一度親指をクリックします。どうすればこれが起こらないようにできますか? これをデータベースに追加することは私が考えていたオプションですが、サイトは多くのコメントとユーザーを処理できる必要があります。コメント付きのページを表示するたびに非常に長いテーブルをクエリするため、ページの読み込みが確実に遅くなる短い時間.

現在、私はコメントテーブルに親指の数を数えているので、コメントテーブルを照会して数字を表示します。ユーザーIDとコメントIDを含む新しいテーブルを追加して、誰かがそのテーブルをクエリできるようにする場合、ユーザーID ==ログインユーザーとコメントID ==コメントが許可されていない行がある場合は、追加することをお勧めしますか? もしそうなら、これは私がそれを行う方法について考えていましたが、上で述べたように、ページの読み込みを確実に遅くする巨大なテーブルにつながります

4

2 に答える 2

0

クリックを単純なカウンターとして保存するのではなく、実際のイベントを保存する必要があります

「クリックログ」などと呼ばれる別のテーブルを作成し、、、などのフィールドを追加useridcommentidますIsThumbsUp。次に、ajaxページで、このテーブルに親指を追加できます(IsThumbsUpはブール値です。親指の場合はtrue、親指の場合はfalseです。

SELECT comment, thumbsUp, thumbsDown次に、使用できるようなものを使用する代わりに

SELECT id, comment,
       (SELECT count(commentid) FROM clicklog WHERE commentID=id AND IsThumbsUp=1) AS thumbsUp,
       (SELECT count(commentid) FROM clicklog WHERE commentID=id AND IsThumbsUp=0) AS thumbsDown
FROM comments

また、AJAX ページで、ユーザーが以前に投票したかどうかを確認できます。彼が持っている場合は、許可しないでください。またはさらに良い。賛成票を投じたら、反対票を投じる (IsThumbsUp を 1 から 0 に変更する) か、またはその逆に変更できます。

各ユーザーがコメント ID とユーザー ID との接続を 1 つだけ持つようにしてください。

また、クリックログのフィールドにインデックスを付けて、情報をすばやく取得してください。主キーを配置しcommentiduserid結合し、次に別のインデックスを配置しcommentidIsThumbsUp結合します

于 2012-12-17T15:19:06.500 に答える
0

1 つの方法は、コメントをロードするときに、そのユーザーがそれぞれのコメントに既に投票している場合はコメントもロードし、そのユーザーがすでに投票している場合は親指ボタンを無効にすることです。

于 2012-12-17T15:18:14.070 に答える