1

ボタンのテーブルのように

  • LIKE_ID (投稿ごとにユニークないいね ID)
  • いいね(誰かがいいねボタンをクリックした回数)
  • POST_ID (posts テーブルの POST_ID に対応)

個別の投稿テーブルには、各投稿に固有の上記の POST_ID があります

ユーザー用に別のユーザー テーブルが存在する

したがって、ユーザーがいいねボタンをクリックすると、いいねテーブルに +1 が追加されます。post_id は、好きな投稿です。

JavaScriptファイル

$(document).ready(function() {
$('img.like_click').click(function() {
var form = $(this).closest('form[name=like_form]');
var lid = $(form).find('input[name=lid]').val();
$.post("like.php?lid='" + lid + "', function(data) {
$(form).find('span.like_count').html(data);
});
});

like.php ファイル

$lid = $_GET['lid'];
mysql_query("UPDATE tbl_likes SET likes=likes+1 WHERE like_id=".$lid) or     die(mysql_error());
$result = mysql_query("SELECT likes from files where fileid=" . $id) or die(mysql_error());
$row = mysql_fetch_assoc($result);
echo $row['likes'];

ユーザーが何度も好きになるのを止める方法がわかりません。人々がこれを行うのを止めるFacebookスタイルのスクリプトをWeb上で見つけましたが、それらはIPアドレスに基づいており(ログインしていない場合、私の投稿を気に入ることはできません)、それらのコードは混乱を招きました。 jquery のやつ。上記のコードを使用していいねボタンを適切に表示する方法をまだ見つけようとしていますが、最も難しいのは複数のいいねを制限することで、私は困惑しています。誰でも助けることができますか?ありがとう

4

1 に答える 1

3

ログインしない限り、ユーザーはあなたの投稿を好きになれないとおっしゃいました。重複を防ぐために、どのユーザーがどの投稿を気に入ったかを追跡するだけです。

like テーブルで、列を削除しlikesます。それは後で計算します。列を追加して、user_idどのユーザーがどの投稿を気に入ったかを追跡できるようにします。次に、 ANDを組み合わせ primary_keyて追加し、重複を防ぎます。post_iduser_id

次に、クエリを次のように構成します。

$q = mysql_query("INSERT INTO tbl_likes (user_id, post_id) VALUES ('{$user_id}', {$post_id})");

if( $q === false ) {
    // query didn't work, probably a duplicate
}
else {
    // return a success etc
}

いいねの数を取得したい場合は、次のように count クエリを使用します。

SELECT post_id, count(*) as c FROM tbl_likes WHERE post_id = $post_id;
于 2012-06-25T05:35:41.957 に答える