如何检查当前用户是否已经喜欢或不喜欢评论

时间:2013-03-04 06:50:13

标签: php mysql sql algorithm tsql

我在mysql数据库中有两个表

  1. tbl_comments
  2. tbl_user_votes
  3. tbl_user_votes

    中有三个字段
    1. comment_id, 2. user_id, 3.vote_type ('L' OR 'D') (L for Like, D For Dislike)
    

    我有一个分页计划,根据我的每个网页都有20条评论。每个评论都有一个喜欢和不喜欢的按钮。当登录用户点击“赞或不喜欢”时,会在tbl_users_votes, 1. comment_id, 2. user_id, 3. vote_type (L OR D).

    中插入三个值

    我希望当页面重新加载时,所有评论他点击“喜欢”或“不喜欢”,必须在评论下显示“你喜欢”或“你不喜欢”。

    我的问题是,我不打算为这个问题制作一个有效的算法。 我认为这样的解决方案。

    我必须为每个评论运行一个SQL查询,例如"SELECT * From tbl_user_votes where comment_id = xyz and user_id = xyz",然后检查是否存在针对该user_id和comment_id的某些值。如果存在,那么我检查每个评论的值和Put和If else条件,如此

    If(vote_found)
      If(vote_type=='L')
       echo "You Like"
      else if(vote_type=='D')
       echo "You Dislike'
    

    但我认为这不是一种有效的方法。它看起来非常耗费内存和时间,好像页面上有20个注释,每个注释对数据库的SQL查询都非常昂贵。

    任何人都可以有更好,更有效的方法来处理这个问题。

1 个答案:

答案 0 :(得分:0)

我建议你使用一个查询,它也可以让你在一个记录集中投票。

SELECT
  tbl_comments.*,
  tbl_users.*
FROM
  tbl_comments LEFT JOIN tbl_users
  ON tbl_comments.user_id = tbl_users.user_id2
WHERE
  (tbl_users.user_id="xxx")
  OR (tbl_users.user_id IS NULL);

我不知道tbl_users中你的索引是什么,所以我假设user_id2,如果需要就改变它。

使用LEFT JOIN将为您提供该用户的所有评论,如果存在,则表示用户投票。如果tbl_comments.user_idNULL,则表示没有评论。