评论 点赞(ajax多对多的小应用)

用户登录之后才可以给文章点赞 ,一篇文章只能点一次 ,点一个,赞数加一

(只能点赞不能取消赞)

功能实现(tp做的)

建表:  用户表(user)            文章表   (text)                                用户文章关系表(u_t)           点赞表dz()

             u_id    name                t_id   title   content                              uid   tid   pinglun                        uid   tid

             用户id   用户名           文章id   文章标题   文章内容                用户id  文章id   评论内容         用户id  文章id

思路

1:登录用户,设置Session传送用户id  (登录页面)

2:查询文章表,展示中爱还要展示评论的个数。根据文章id,查询关系表(u_t)关系表中 指定文章的评论个数(根据文章id 在关系表中找评论的条数)(展示文章)

3:根据Session获取用户id,根据文章表获取文章id,根据用户id和文章id查找用户文章关系表(u_t)中的评论(显示评论页面)

4:有用户id、文章id可添加评论

5.有用户id、文章id添加入库(点赞的表),判断用户是否存在,存在false,不存在添加    计数指定uid的tid个数(就是点赞个数)

展示文章页面的图片

展示文章评论页面的图片

实现的代码

登录展示

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>用户登录页面</title>
</head>
<body>
<form action="{:url('index/login')}" method="post">
    <table>
        <tr>
            <td>用户名</td>
            <td><input type="text" name="username"></td>
        </tr>
        <tr>
            <td>密码</td>
            <td><input type="password" name="pwd"></td>
        </tr>
        <tr>
            <td></td>
            <td><input type="submit" value="登录"></td>
        </tr>
    </table>
</form>
</body>
</html>


控制器(方法)

控制器

<?php
namespace app\index\controller;
use app\index\model\User;
use think\Controller;
use think\Request;
use think\Db;
use think\Session;

class Index extends Controller
{
   public function login()
   {
      if(Request::instance()->isGet())
      {
         return view('login');
      }
      else
      {
         $name=input('post.username');
         $user = new User();
         $res=$user->sel($name);
         if($res)
         {
            $user=Db::table('user')->where('username',$name)->find();

            Session::set('id',$user['u_id']);
            $this->success('登录成功','text');
         }
         else
         {
            $this->error('登录失败');
         }
      }
   }

   //展示文章类型  展示文章
   public function text()
   {
      $res=Db::table('text')->select();
      //遍历找到想要的文章id
      foreach($res as $k=>$v)
      {
         //关系表中 指定文章的评论个数(根据文章id 在关系表中找评论的条数)
         $res[$k]['count']=Db::table('t_u')->where('tid',$v['t_id'])->count();
      }
      return view('text',['arr'=>$res]);
   }

   //评论展示
   public function show()
   {
      //文章类型的id
      $id=input('get.id');
      //根据文章id 找用户id和评论内容
      $res=Db::table('user')->join('t_u','user.u_id=t_u.uid')->where('tid',"$id")->select();
      $arr=Db::table('text')->where('t_id',"$id")->select();
      foreach($arr as $k=>$v)
      {
         //关系表中 指定文章的评论个数(根据文章id 在关系表中找评论的条数)
         $arr[$k]['num']=Db::table('dz')->where('tid',$id)->count();
      }
      return view('show',['arr'=>$res,'data'=>$arr]);
   }

   //添加评论
   public function p_insert()
   {
      //评论人
      $arr['uid']= Session::get('id');
      //评论内容
      $arr['content']=input('post.text');
      //文章id
      $arr['tid']=input('post.tid');
      $res= Db::table('t_u')->insert($arr);
      if($res)
      {
         $this->success('评论成功');
      }
      else
      {
         $this->error('评论失败');
      }
   }

//点赞入库
   public function dz()
   {
         $uid=Session::get('id');
         $tid=input('post.tid');
         $res= Db::table('dz')->where('uid',$uid)->where('tid',$tid)->select();
         if($res==true)
         {
            return false;
         }
         else
         {
            $res['uid']=Session::get('id');
            $res['tid']=$tid;
            Db::table('dz')->insert($res);
            return true;
         }
   }



}


文章展示

文章展示

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>文章</title>
</head>
<body>
<h3 style="color: red">文章显示</h3>
<table cellspacing="70">
    {volist name="arr" id="v"}
    <tr>
          <td>文章名称:<a href="{:url('index/show')}?id={$v.t_id}">《{$v.t_name}》</a></td>
          <td>评论条数:{$v.count}</td>
    </tr>
    {/volist}
</table>

</body>
</html>


 

文章评论点赞展示

文章评论点赞展示

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>评论展示</title>
</head>
<body>

{volist name="data" id="v"}
<h4 style="color: red">
   《{$v.t_name}》
    <input type="hidden" value="{$v.t_id}" class="tid">
</h4>
<textarea name="" cols="70" rows="15">{$v.node}</textarea>
<br>
<a href="javascript:void (0)" style="margin-left: 400px;" id="dz"><img src="__STATIC__/61.GIF" alt=""></a>
<span class="p">({$v.num})</span>
<br>
{/volist}

    {volist name="arr" id="v"}
       {$v.username}:
       {$v.content}
        <br>
    {/volist}

<br>
<form action="{:url('index/p_insert')}" method="post">
    <textarea name="text" id="" cols="30" rows="10" placeholder="请输入评论的内容"></textarea>
    <br>
    {volist name="data" id="v"}
    <input type="hidden" name="tid" value="{$v.t_id}">
    {/volist}
    <input type="submit" value="我要评论">
</form>
<br>
<a href="{:url('index/text')}"  style="margin-left: 250px;">查看文章</a>
</body>
</html>
<script src="__STATIC__/jquery.js"></script>
<script>
    $(document).on('click','#dz',function(){
    var tid=$(".tid").val();
    $.ajax({
        type: "POST",
        url: "{:url('index/dz')}",
        data: {
            tid:tid
        },
        success: function(msg){

          if(msg==false)
          {
              alert('您已经点过赞了');
              return false;
          }
            else
          {
              history.go(0);
          }
        }
    });
});
</script>

猜你喜欢

转载自blog.csdn.net/baiyawen1/article/details/81099213