创建每个帖子上显示的“喜欢按钮”?

时间:2016-01-18 05:08:39

标签: php html mysql

好的,首先,我是SQL和PHP的新手。我有一个数据库设置,我能够在HTML表单中输入由3个字段组成的条目,并在我的网站上显示这些条目。但是,我需要一个会出现在每个帖子上的“喜欢按钮”,这个想法就像+1按钮只会为该特定帖子计数一个计数器。我一直在搜索,因为我是新手,我似乎很难找到正确的方法来做到这一点?我已经阅读了类似的问题,看起来人们正在解析?我还读过在提交的HTML表单上使用隐藏字段进行比较的内容?我无法弄清楚这方面的语法:/我不够先进,无法将想法应用到我的代码中,我来这里是为了获得有关如何获得这个'Like按钮'的帮助。

我基本上正在寻找与StackOverflow完全相同的东西,其中一个类似按钮与帖子一起创建,并且只能为所点击的特定帖子更新+1计数器。

我的网站目前包含一个admin.php(包括HTML表单)页面,一个index.php(显示数据库输出)和insert.php(用于数据库插入),我一直在尝试使用各种想法insert2.php与insert.php结合使用。

非常感谢任何帮助或评论。我已经在这个网站上找到了很多很棒的帮助。如果我需要发布任何代码,以便让自己更容易或更轻松,请告诉我。大声笑。

谢谢大家。

1 个答案:

答案 0 :(得分:0)

首先为每个用户链接一个表,其中包含字段user_id,likes,post_id

现在你需要做的就是如果用户喜欢某个帖子填充这个表格, 喜欢字段1,而不喜欢字段0

在循环视图中添加此代码

 <a href="#" class="likeUserPost" id="like<?php echo $userpost['updates_id']; ?>" updateId="<?php echo $userpost['updates_id']; ?>">
<span class="glyphicon glyphicon-plus-sign" ></span> 
<?php if($userpost['islike']=='yes'){echo "UnVote";}else{echo "Vote";} ?></a>

jQuery的:

  <script type="text/javascript">
  $(document).on('click','.likeUserPost',function(e){
    e.preventDefault();
    var base_url='<?php echo base_url();?>';
    var user_id ='<?php echo $current_user_id; ?>';
    var updates_id=$(this).attr('updateId');
    $.ajax({
        type:'post',
        url:base_url+'home_content/updateLike',
        data:{user_id:user_id,update_id:updates_id},
        success:function(data){
           var res= JSON.parse(data);
            if(res.likecode=="unlike"){
               var totalLike=res.totalcount;
                $('#countID'+updates_id+'').html(totalLike);
                $('#vote'+updates_id+'').html('Vote');
            }
            else{
                 $('#countID'+updates_id+'').html(res.totalcount);
                $('#vote'+updates_id+'').html('UnVote');
            }
        }
    });

  });  

</script>

Php Code我在我的模型中使用codeigniter

function updateLike($user_id,$update_id){
        // print_r($update_id);exit;
        $sql=$this->db->query("SELECT * from updates_like where user_id='$user_id' AND  updates_id='$update_id'");
        $data=$sql->row();
        if(empty($data)){
            $date=date('Y-m-d H:i:s');
            $likeData = array('totallike' =>'1',
                'created_date'=>$date,
                'user_id'=>$user_id,
                'updates_id'=>$update_id
                 );
                $this->db->insert('updates_like',$likeData);
                $returnData = array('likecode' =>'like' , 'totalcount'=>$this->totalLikeCount($update_id));
            }
        else{
            $like=$data->totallike;
            $newLike= 1-$like;
            $this->db->set('totallike',$newLike);
            $this->db->where('user_id',$user_id);
            $this->db->where('updates_id',$update_id);

            $this->db->update('updates_like');
            if($newLike==0){
                $returnData = array('likecode' =>'unlike' , 'totalcount'=>$this->totalLikeCount($update_id));
            }
            else{
                $returnData = array('likecode' =>'like' , 'totalcount'=>$this->totalLikeCount($update_id));
            }

        }
        return $returnData;
    }

这是我的控制器

public function updateLike(){
    $user_id=$this->current_user_id;
    $update_id=$this->input->post('update_id');
    $a=$this->home_content_model->updateLike($user_id,$update_id);
    print_r(json_encode($a));

}