1

コメントごとにレートを付けた簡単なコメントシステムを作成しています。

(このコメントは気に入りましたか?) 「はい」と「いいえ」の 2 つのボタンがある質問です。

ボタンをクリックすると、データベース内の投票数が「はい」または「いいえ」の場合に更新される簡単な方法を見つけようとしています。

インターネットでいくつかの場所を調べましたが、大きな問題ではなく、簡単に実行できることを除いて、それほど具体的なものはありませんでした.

列の種類は何ですか?また、html ボタンにクエリを記述する方法は?

4

3 に答える 3

3

ここでは、下線を引く意味合いでさまざまな質問をしています。私はあなたがそれを理解するのを手伝おうとします。

まずはデータベース。

ここで考慮すべき点がいくつかあります。

  • ユーザーはいますか? その場合、前の回答で提案されているように、ユーザーと投票をリンクする投票テーブルを作成する必要があります。ただし、投票数を知るために COUNT を使用する必要はありません。これは、大きなデータベースでは時間がかかります。コメント テーブルにカウンター フィールドを作成し、それをインクリメント/デクリメントするだけで、毎回カウントする必要がなくなります。
  • ユーザーがなく、誰でもサイトで投票できる場合は、ボットによるスパムを防ぐために、Cookie または何らかの一時的な識別子 (IP アドレスなど、まったく信頼できませんが) の使用を検討することをお勧めします。投票。それ自体は非常に複雑な問題であり、登録ユーザーに投票を制限することをお勧めします。
  • 提案されているように、「投票」フィールド自体はTINYINTになります。

今すぐクエリ自体。

繰り返しますが、あなたの知識に応じていくつかの可能性があります。

  • 最も簡単な方法は、フォームを作成し、結果を同じページに送信し、ページのロード時にデータが設定されていることを php でチェックすることです。その場合は、投稿データを含むクエリを送信します。それを適切に行う方法を説明するチュートリアルがたくさんあります (データのサニテーションなどを使用して)。
  • ただし、前述のソリューションではページ全体がリロードされます。これは面倒で、あまり役に立ちません。よりスムーズなユーザー エクスペリエンスを作成するには、AJAX でこれを行う必要があります。初めての場合でも試してみたい場合は、優れた JavaScript ライブラリであるjqueryを確認してください。
于 2013-09-03T08:51:21.370 に答える
2

2 つのテーブルを作成することをお勧めします。

Comments:

  • CommentId
  • CommentText
  • ... その他の列

Votes:

  • VoteId
  • CommentId(この投票についてのコメント)、
  • UserId(コメントの評価方法)、
  • Liked(フラグ 0 (いいえ) または 1 (はい))。

HTML ボタンをクリックすると、投票テーブルに新しい行が挿入されます。

次に、投票数を取得するには、2 つのテーブルを結合し、2 番目のテーブルの数を次のように数えますGROUP BY

SELECT 
  c.CommentId,
  COUNT(COALESCE(v.VoteId, 0)) AS TotalVotes
FROM Comments AS c
LEFT JOIN votes AS v ON c.commentId = v.CommentId
GROUP BY c.CommentId;

必要に応じて、likes = 0 または likes = 1 を個別にクエリすることもできます。これは単なる例です。

于 2013-09-03T08:38:22.230 に答える
0

データ型は好きなようにできます。CHAR、VARCHAR、TINYINT、または BOOL はすべて一般的な選択肢です。個人的には、TINYINT を使用します。

おっしゃる通り、これは簡単な作業です。ボタンにアクションを割り当てることについては、議論があると思います。

于 2013-09-03T08:40:25.477 に答える