美文网首页
ThinkPHP3.2基础知识

ThinkPHP3.2基础知识

作者: 王利桢 | 来源:发表于2019-06-24 22:53 被阅读0次

    ThinkPHP 论坛小项目 基础知识

    ThinkPHP

    /******************************************/

    添加用户

    1.创建控制器 create 方法

    public function create(){}

    2.显示html页面

    $this->display()

    3.获取form表单传过来的数据:

    $data['uname'] = $_POST['uname'];

    4.使用M方法获取数据表信息将数据插入到数据表

    M('bbs_user')->add($data);

    5.检查是否插入到数据库

    try{

    M('数据表名称')->add(表单传的值$data)

    }catch(\Eception $e){

    $this->error('添加信息失败');

    }

    $this->succes('添加信息成功');

    6.判断密码和确认密码是否为空

    if(empty()...||...){...}

    例如:

    1.创建控制器方法

    public function create(){

    6.判断密码是否为空

    if(empty($_POST['upwd']) || if(empty($_POST['reupwd'])){

    $this->error('密码不能为空');

    }

    7.判断密码和确认密码是否一致

    if($_POST['upwd'] !== $_POST['reupwd']){

    $this->error('密码和确认密码不一致');

    }

    8.密码存入到数据表加密处理

    $_POST['upwd'] = password_hash($_POST['upwd',PASSWORD_DEFAULT]);

    9.调用上传文件方法 对文件信息进行处理

    $data['uface'] = $this->doUp();

    10.调用生成的缩略图方法

    $this->smPice($data['uface']);

    3.接收form表单提交的值 $uid = $_POST;

    $data['uname'] = $_POST['uname'];

    $data['age'] = $_POST['age'];

    $data['tel'] = $_POST['tel'];

    ......

    5.进行测试判断显示错误或者添加成功

    try{

    4.找到对应的信息表将数据插入到数据表

    M('bbs_user')->add($data);

    }catch(\Exception $e){

    $msg = $e->getMessage();

    $this->error('添加信息失败');

    }

    $this->success('添加信息成功');

    2.显示html页面

    $this->display();

    }

    /********************************************/

    查看用户

    1.创建控制器 index 方法

    public function index(){}

    2.显示html页面

    $this->display()

    3.获取数据表信息 使用M方法

    $bbs_user = M('bbs_user')->select();

    4.分配变量 在html页面显示数据信息

    $this->assage('bbs_user',$bbs_user);

    例如:

    1.创建控制器中的方法

    public function index(){

    3.获取数据表的信息 使用M方法

    M('bbs_user')->select();

    4.分配变量 在html页面使用这个变量

    $this->assign('bbs_user',$bbs_user);

    2.显示html页面

    $this->display();

    }

    /*****************************************/

    修改用户

    // 在表单中显示值

    1.创建控制器方法edit

    public function edit(){}

    2.显示html页面

    $this->display();

    3.使用$_GET接收到地址栏的ID

    $uid = $_GET['uid'];

    4.M方法查询对应的数据表 使用find方法通过接收到的ID来进行修改这一条信息

    $bbs_user = M('bbs_user')->find($uid);

    5.分配变量 在html页面使用此变量 显示数据信息

    $this->assign('bbs_user',$bbs_user);

    6.再创建一个控制器 update 方法

    public function update(){}

    7.获取get地址传过来的ID

    $uid = $_GET['uid'];

    8.获取当前通过get传过来的ID地址post表单中的数据信息

    $data = $POST;

    9.将form这个表单中修改后的信息保存到数据库 (uid代表数据表中的uid字段  $uid代表get地址传值的ID)

    M('bbs_user')->where("uid=$uid")->save($data);

    10.检查是否将此信息更新到了数据库

    try{...}catch括号 花括号

    例如:

    1.在控制器中创建edit方法

    public function edit()

    {

    3.接收get地址的ID

    $uid = $_GET['uid'];

    4.使用M方法查询对应数据表的get地址传过来的ID信息数据

    $bbs_user = M('bbs_user')->find($uid);

    5.分配变量 在html页面获取数据时使用

    $this->assign('bbs_user',$bbs_user);

    2.显示html页面

    $this->display();

    }

    6.创建控制器 update 方法

    public function update()

    {

    7.获取get地址栏传过来的ID

    $uid = $_GET['uid'];

    8.通过get传过来的ID地址 获取form表单提交的这一条信息

    $data = $_POST['uid'];

    10.测试是否将某一条信息更新到了数据库

    try{

    9.查询对应的数据表 将对应的uid信息更新到数据表 (uid代表数据表的uid $uid代表get地址传过来的ID)

    M('bbs_user')->where("uid=$uid")save($data);

    }catch(\Exception $e){

    $msg = $e->getMessage();

    $this->error('更新失败');

    }

    $this->success('更新成功');

    }

    例如2:

    /*修改已上传的图片*/

    public function edit()

    {

    // 获取原有数据

    //接收到html页面传过来的数据

    $uid = $_GET['uid'];

    // 查询数据表的信息

    $obj = M('bbs_user');

    // 读取数据表的信息

    $bbs_user = $obj -> find($uid);

    // 显示到表单

    // 分配变量

    $this->assign('bbs_user',$bbs_user);

    // 显示到表单

    $this->display();

    }

    // 接收表单数据

    public function update()

    {

    // 获取html页面传过来的uid信息

    $uid = $_GET['uid'];

    // 获取到数据表的信息

    $obj = M('bbs_user');

    $data = $_POST;

    // 判断是否有上传文件

    if($_FILES['uface']['error'] != 4)

    {

    // 图片上传修改

    $data['uface'] = $this->doUp();

    $this->smPic($data['uface']);

    }

    try{

    // 需要更改的哪个信息 save保存

    $obj -> where("uid=$uid")->save($data);

    } catch(\Exception $e) {

    $this->error('修改失败');

    }

    $this->success('修改成功','/index.php?m=admin&c=user&a=index');

    }

    例如3:

    // 修改帖子信息

    public function edit()

    {

    // 获取到get传过来的地址

    $pid = $_GET['pid'];

    // 查询数据表获取的信息

    $bbs_post = M('bbs_post')->find($pid);

    // var_dump($bbs_post);die;

    // 获取bbs_user表里面的所有信息 并且拿到bbs_post里面对应的uid

    $bbs_user = M('bbs_user')->find($bbs_post['uid']);

    // var_dump($bbs_user);die;

    // 分配bbs_user表的变量

    $this->assign('bbs_user',$bbs_user);

    // 分配变量显示到修改的html页面

    $this->assign('bbs_post',$bbs_post);

    // 显示html页面

    $this->display();

    }

    public function update()

    {

    //接收get传过来的id信息

    $pid = $_GET['pid'];

    // 获取表单的传值数据

    $data = $_POST;

    // 获取数据表原来信息和表单信息将信息保存到数据库

    try{

    M('bbs_post')->where("pid=$pid")->save($data);

    }catch(\Execption $e){

    $msg = $e->getMessage();

    $this->error('帖子修改失败');

    }

    $this->success('帖子修改成功','/index.php?m=admin&c=post&a=index');

    }

    /******************************************/

    删除用户

    1.创建控制器中的 delete 方法

    public function delete(){}

    2.获取get地址传过来的ID

    $uid = $_GET['uid'];

    3.查询数据表中通过get传过来的ID删除这一条数据

    M('bbs_user')->delete($uid);

    4.测试是否本条信息已被删除

    try{}catch

    例如:

    1.创建控制器的delete方法

    public function delete()

    {

    2.接收uid传过来的ID

    $uid = $_GET['uid'];

    4.测试是否本条信息已被删除

    try{

    3.查询对应的数据表并进行对get地址传过来的这一条ID信息删除

    M('bbs_user')->delete($uid);

    }catch(\Exception $e){

    $msg = $e->getMessage();

    $this->error('删除失败');

    }

    $this->success('删除成功');

    }

    /*****************************************************/

    文件上传(图片 头像)

    1.创建Controller中的控制器doUp方法

    public function doUp(){}

    2.对文件要求的配置信息(可以自己配置)

    $config = array(

    对文件大小要求

    'maxSize' => 3145728,

    文件保存的位置 文件夹要自己创建 可自己更改文件存储位置

    'rootPath' => './Public/Uploads/',

    文件保存的名称是什么(随机生成13位字符)

    'saveName' => array('uniqid',''),

    对文件后缀名的要求

    'ests' => ('gif','jpg','png','jpeg'),

    'autoSub' => 'true',

    对目录部分进行设置

    'subName' => array('date','Ymd'),

    );

    3.实例化对象 要使=调用Think\Upload这个类里面的$config这个信息

    $up = new \Think\upload($config);

    4.$up对象调用upload返回给一个$info变量

    $info = $up -> upload();

    5.判断是否为有上传文件或者为空

    if(!$info){

    $this->error($up -> getError() );

    }

    6.获取文件路径信息 (目录和文件名称)

    return $info['uface']['savepath'].$info['uname']['savename'];

    例如:

    1.创建Controller控制器中的方法 doUp

    public function doUp()

    2.对文件上传的要求

    $config = array(

    'maxSize' => '3145728',

    'rootPath' => './Public/uploads/',

    'savePath' => '',

    'saveName' => array('uniqid',''),

    'ests' => array('jpg','gif','png','jpg'),

    'autoSub' => true,

    'subName' => array('date','Ymd'),

    }

    3.实例化对象调用\Think\Upload这个类 输出$config里面的信息

    $info = new  \Think\upload($config);

    4.对象调用upload类返回给一个变量$info

    $info = $up -> upload();

    5.判断$info是否有上传文件或者是为空 提示错误信息

    if($info){

    $this->srror($up->getError());

    }

    6.返回这个上传图片的地址和图片的名称

    return $info['uface']['savepath'].$info['uface']['savename'];

    /**************************************************/

    缩略图处理

    调用公共函数库

    1.在mybbs\Application\Common\Common中新建一个function.php公共函数文件

    function.php

    2.创建一个方法

    function getSm(){}

    3.调用函数让原来的图片名称添加一个表前缀 返回值

    return str_replace('/','sm_',$filename);

    4.在smPic方法中调用

    第 6 , 8 步骤使用

    5.创建Controller控制器 smPic方法

    public function smPic(){}

    6.要打开的文件位置和名称是哪里 磁盘路径 ($data['uface']是上传文件处理时生成的图片地址(调用))

    $filename = './Public/uploads/'.$data['uface'] 如果参数化可以写成$file;

    7.打开image图片使用GD库 打开$filename这张图片

    $image = new \Think\Image(\Think\Image::IMAGE_GD,$filename);

    8.将打开的图片生成缩略图更改新名称

    $thumb_name = './Public/uploads/'.getSm( $data['uface'] 如果参数化可以写成$file);

    9.设置图像的大小和图片的保存

    $image ->thumb(100,100)->save($thumb_name);

    10.注意:缩略图不需要写入数据库

    例如:

    1.公共函数库创建一个公共函数getSm

    function getSm(){

    2.返回给一个添加了表前缀的名称

    return str_replace('/','sm_',$filename);

    }

    5.在控制器Controller中创建一个smPic方法

    public function smPic()

    {

    6.要打开的文件位置是哪里

    $filename = './Public/uploads/'.$data['uface'];

    7.要打开的是哪个路径的哪一张图片

    $image = new \Think\Image(\Think\Image::IMAGE_GO,$filename);

    8.获取图片的路径和名称并且添加表前缀

    $thumb_name = './Public/uploads/'.getSm($data['uface']);

    9.设置图片的大小并且保存

    $image ->thumb(100,100)->save($thumb_name);

    }

    /****************************************************/

    搜索查询

    1.编辑html页面form的提交路径和提交方法 或者是post

    <form action="当前页面的路径" method="get"></form>

    2.如果使用get提交那么地址就需要更改

    <input type="hidden" name="m" value="admin">

    <input type="hidden" name="c" value="user">

    <input type="hidden" name="a" value="index">

    3.填写的html中的name和数据库中的表字段要相等

    <input type="text" name="age" value="">

    4.搜索可以写在控制器Controller的index方法中 或者可以新建一个控制器和方法

    5.先定义一个空条件数组

    $arr = [];

    6.判断sex的值是否为空

    if(!empty($_GET['uname']) ){

    }

    7.如果不是空就执行 这个模糊匹配查询

    $arr['uname'] = ['like','%'.$_GET['uname'].'%'];

    8.分配变量显示到页面

    $this->display();

    1,2,3,4 需要在html页面

    例如:

    5.在index方法中写搜索即可

    public function index()

    {

    6.定义一个空数组

    $arr = [];

    7.判断传过来的信息是否为空

    if(!empty($_GET['uname'])){

    不为空就和数据表中的信息模糊查询匹配

    $arr['uname'] = ['like','%'.$_GET['uname'].'%'];

    }

    8.分配变量 显示到html页面

    $this->dispaly();

    }

    例如2: 如果是新建一个控制器和方法还有HTML页面  方法如下:

        public function seek()

        {

            $arr = [];

            // var_dump($_GET);

            // 搜索

            // var_dump($_POST);

            $title = $_POST['title'];

            // 模糊查询

            if(!empty($title)){

                $arr['title'] = array('like','%'.$title.'%');

            }

            // 查询数据库表的数据信息

            $bbs_posts = M('bbs_post')->where($arr)->select();

            // 分配变量

            $this->assign('bbs_posts',$bbs_posts);

          // 显示页面

            $this->display();

        }

    例如3:

    // 搜素 设定一个空数组

    $tiaojian = [];

    // 标题

    if(!empty($_GET['title'])){

    $tiaojian['title'] = ['like','%'.$_GET['title'].'%'];

    }

    // 发布人

    if(!empty($_GET['uname'])){

    $uname = $_GET['uname'];

    $user =  M('bbs_user')->where("uname='$uname'")->select();

    $tiaojian['uid'] = $user[0]['uid'];

    }

    // 条件同时搜索

    if( !empty($_GET['uname']) && !empty($_GET['title']) ){

    $tiaojian['title'] = ['like','%'.$_GET['title'].'%'];

    $uname = $_GET['uname'];

    $user =  M('bbs_user')->where("uname='$uname'")->select();

    $tiaojian['uid'] = $user[0]['uid'];

    }

    /**********************************************/

    分页+搜索显示

    1.获取数据表的信息并且给出搜索条件查询出符合条件的总记录数

    $count = M('bbs_user')->where($arr搜索)->count();

    2.实例化对象 调用分页的类和方法 count()总记录是多少 5代表显示几条

    $page = \Think\Page($count,5);

    3.分页显示输出 某个页面的超级链接

    $show = $page->show();

    4.使用select方法分页+搜索显示数据

    $bbs_users = $count -> where($arr)

    -> limit($Page->firstRow.','.$Page->listRows)

    -> select();

    5.分配变量 分配显示到html 搜索

    $this->assign('bbs_users',$bbs_users);

    6.分配变量 分配显示到html 分页

    $this->assign('show',$show);

    7.信息显示到表单

    $this -> display();

    例如:

    在Controller控制器index方法写入

    public function index()

    {

    1.查询数据表信息根据条件获取总记录数

    $count = M('bbs_user')->where($arr)->count();

    2.调用类和方法显示页面的总数和每页的条数

    $page = \Think\Page($count,5);

    3.分页显示输出 某个页面的超级链接

    $show = $page->show();

    4.根据条件显示页面的搜索信息+分页数据

    $bbs_users = $count -> where($arr)

    -> limit($page->firstRow.','.$page->listRows)

    -> select();

    }

    5.分配变量 在html页面使用

    $this->assign('bbs_users',$bbs_users);

    6.分配变量 在html页面显示数据使用

    $show->assign('show',$show);

    7.显示html页面

    $this->display();

    /************************************************/

    登录

    1.准备登录的html页面

    前端 login.html

    2.创建一个控制器LoginController

    LoginController.class.php

    3.在控制器中创建login方法

    public  function login(){}

    4.在方法中显示login.html页面

    $this->display();

    5.创建和接收账号验证的控制器中的方法

    public function dologin(){}

    6.修改login.html页面的提交地址和数据信息

    <form action="" method=""></form> name值  value值

    7.开始在dologin写方法 获取用户通过表单传过来的值

    $uname = $_POST['uanme'];

    $upwd = $_POST['upwd'];

    8.查询数据库中的数据 表单提交的信息是否和数据库中匹配

    $bbs_user = M('bbs_user')->where("uname=$uname")->find();

    9.判断账号uname和密码 表单和数据库对比是否一致

    $bbs_user && password_verify($upwd, $bbs_user['upwd']) )

    10.将信息保存到session中

    $_SESSION['homeFlag'] = true;

    $_SESSION['homeUser'] = $bbs_user;

    11.进行判断

    if(){...}else{...}

    例如:只写php方法

    1.创建控制器方法 login

    public function login()

    {

    2.显示登录html页面

    $this->display()

    }

    3.创建dologin方法

    public function dologin(){

    4.接收登录表单提交过来的数据信息

    $uname = $_POST['uname'];

    $upwd = $_POST['upwd'];

    5.对比表单填写账号是否和数据库账号一致

    $bbs_user = M('bbs_user')->where("uname='$uname'")->find();

    6.对比表单填写的账号和密码是否和数据库一致 使用判断给出提示

    if($bbs_user && $password_verify($upwd,$bbs_user['upwd'])){

    7.将用户信息存储到页面中 使用session方法

    $_SESSION['homeFlag'] = true;

    $_SESSION['homeUser'] = $bbs_user;

    $this->success('登录成功');

    }else{

    $this->error('登录失败');

    }

    }

    例如:登录html页面判断是否登录

    <!--登陆部分start-->

    <div id="login" style="width:233px; margin-top:20px;">

    <!-- 双分支结构判断 判断页面登录后和登录前 账号信息该如何显示到页面 -->

    <?php if(empty($_SESSION['homeFlag'])): ?>

    <form action="/index.php?m=home&c=login&a=dologin" method="post">

    <!-- <form action="{:U('home/login/dologin')}" method="post"> -->

      <table style="width: 309px;">

    <tr>

      <td>

    <label>帐号</label>

      </td>

      <td>

    <input type="text" name="uname" />

      </td>

      <td width="80px">

    <label><input type="checkbox" name="remember" />自动登录</label>

      </td>

      <td>

    找回密码

      </td>

    </tr>

    <tr>

      <td>

    <label>密码</label>

      </td>

      <td>

    <input type="password" name="upwd" />

      </td>

      <td>

    <input type="submit" value="立即登录" />

      </td>

      <td>

    <a href="/index.php?m=home&c=login&a=login">立即注册</a>

      </td>

    </tr>

      </table>

      </form>

    <?php else: ?>

    <div style="float:left;">

    <a href="/index.php?m=home&c=login&a=index">

    <img src="/public/uploads/<?= $_SESSION['homeUser']['uface']?>" style="float:left; width:45px; height=45px; padding-right: 20px;">

    <!-- <img src="/public/uploads/{:getSm($user['uface'])}" style="float:left; width:45px; height=45px; padding-right: 20px;"> -->

    </a>

    </div>

    <div style="float:left;">欢迎:『{$_SESSION['homeUser']['uname']}』&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</div>

    <div><a style="color:#2975C4; float:left; padding-right: 12px;" href="/index.php?m=home&c=login&a=index">个人中心</a></div><br>

    <div><a style="color:#2975C4; float:left; padding-right: 12px;" href="/index.php?m=home&c=upwd&a=edit&uid={$_SESSION['homeUser']['uid']}">修改密码</a></div>

    <div><a style="color:#2975C4; float:left; padding-right: 12px;" href="/index.php?m=admin&c=login&a=login">登录后台</a></div>

    <div><a style="color:#C30000; float:left; " href="/index.php?m=home&c=login&a=logout">退出账号</a></div>

    <?php endif; ?>

    </div>

    <!--登陆部分start-->

    <?为改变下面的颜色添加

    /*********************************************/

    退出登录

    1.创建控制器中的logout方法

    public function logout(){}

    2.将session值更改

    $_SESSION['homeFlag'] = false;

    $_SESSION['homeUser'] = NULL;

    3.显示页面 跳转到登录页面

    $this->display('/');

    例如:

    1.创建控制器logout方法

    public function logout()

    {

    2.清楚session信息

    $_SESSION['homeFlag'] = false;

    $_SESSION['homeUser'] = NULL;

    3.显示html页面 返回登录的首页

    $this->success('正在退出...','/');

    }

    /**************************************************/

    生成验证码

    public function code()

    {

    // 设置验证码

    $config(

    // 字体设置大小

    'fontSize' => 30,

    // 验证码位数

    'length' => 4,

    // 关闭验证码杂点

    'userNoise' => true,

    //  关闭混肴曲线

    'userCurve' => true,

    );

    // 手册生成验证码方式

    $Verify = new \Think\Verify($config);

    $Verify->entry();

    }

    /***********************************************/

    密码修改

    1.创建Controller控制器中的edit方法

    public function edit(){}

    2.显示html页面

    $this->display();

    3.创建Controller控制器中的update方法

    public function update(){}

    4.获取get地址传过来的ID值

    $uid = $_GET['uid'];

    5.查询数据表中的所有信息 逐条查询$uid

    $bbs_user = M('bbs_user')->find($uid);

    6.获取表单提交的值

    $data = $_POST;

    7.获取表单中某一条数据的值 旧密码框输入的信息

    $data = $_POST['pwd'];

    8.对比表单密码和数据库密码是佛一致

    if(!password_verify($pwd,$bbs_user['upwd'])){

    $this->error('旧密码输入错误');

    }

    9.判断如果相等就将新密码写入到数据表中

    M('bbs_user')->where("uid=$uid")->save($data);

    10.如果测试成功就对新密码进行加密

    $data['upwd'] = password_hash($data['upwd'],PASSWORD_DEFAULT);

    例如:

    1.创建edit方法

    public function edit()

    {

    2.显示html页面

    $this->display();

    }

    3.创建update方法

    public function update()

    {

    4.接收get地址的ID

    $uid = $_GET['uid'];

    5.查询到$uid这条数据

    $bbs_user = M('bbs_user')->find($uid);

    6.接收表单提交的值

    $data = $_POST;

    7.只获取表单提交过来的这一条信息

    $data = $_POST['pwd'];

    8.判断旧密码是否输入正确

    if(!password_verify($pwd,$bbs_user['upwd'])){

    $this->error('旧密码输入错误');

    }

    10.新密码添加成功后再对新密码加密

    $data['upwd'] = password_hash($data['upwd'],PASSWORD_DEFULT);

    9.判断如果旧密码等于数据库密码那么就让新的密码插入到数据库

    try{

    M('bbs_user')->where("uid=$uid")->save($data);

    }catch(\Exception $e){

    $msg = $e->getMessage();

    $this->error('密码我修改失败');

    }

    $this->success('密码修改成功');

    }

    /****************************************************/

    帖子设置加精

    1.创建控制器Controlle yesjing

    public function yesjing(){}

    2.接收get地址的ID

    $pid = $_GET['pid'];

    3.设置这个字段的值

    $data['is_jing'] = 1;

    4.获取数据表的信息并且给定get传过来的ID这个编号的数据进行加精

    M('bbs_post')->where("pid=$pid")->find($data);

    5.进行判断是否添加到数据库改变了这个字段的值

    try{...}catch...

    例如:

    public function yesjing(){

    $pid = $_GET['pid'];

    $data['is_jing'] = 1;

    try{

    $bbs_post = M('bbs_post')->where("pid=$pid")->find($find);

    }catch(\Execption $e){

    $msg = $e->getMessage();

    $this->error('设置加精失败');

    }

    $this->success('设置加精成功');

    }

    取消加精

    1.创建Controller控制器的nojing方法

    public function nojing(){}

    2.获取get的地址ID

    $pid = $_GET['pid'];

    3.设置这个字段的值

    $data['is_jing'] = 0;

    4.获取数据表信息并且给get传过来的这一个值进行写入数据库

    M('bbs_post')->where("pid=$pid")->find($data);

    5.判断测试是否取消加精成功

    try{...}catch...

    例如:

    public function nojing()

    {

    $pid = $_GET['pid'];

    $data['is_jing'] = 0;

    try{

    M('bbs_post')->where("uid=$uid")->find($data);

    }catch(\Exception $e){

    $msg = $e->getMessage();

    $this->error('取消加精失败');

    }

    $this->success('取消加精成功');

    }

    设置:加精 取消加精

    置顶 取消置顶

    隐藏 显示

    都是同样的方法 在数据要添加对应的字段

    设置这些Html页面的写法如下: 并且里面包含了搜索时在html如何填写的方法

    <!-- 继承 -->

    <extend name="Index/index" />

    <!-- 复制和替换 -->

    <block name="mail">

    <!--/sidebar-->

        <div class="main-wrap">

            <div class="crumb-wrap">

                <div class="crumb-list"><i class="icon-font"></i><a href="index.html">首页</a><span class="crumb-step">&gt;</span><span class="crumb-name">作品管理</span></div>

            </div>

            <div class="search-wrap">

                <div class="search-content">

                    <form action="/index.php" method="get">

                        <input type="hidden" name="m" value="admin">

                        <input type="hidden" name="c" value="post">

                        <input type="hidden" name="a" value="index">

                        <table class="search-tab">

                            <tr>

    <!--

    <th width="120">所属分区:</th>

                                <td>

                                    <select name="title" id="">

                                        <option value="">全部</option>

                                            <option value="19">{$v['cid']}</option>                       

                                    </select>

                                </td>

                            -->

                                <th width="70">标题</th>

                                <td><input class="common-text" placeholder="帖子标题" name="title" type="text"></td>

                                <th width="70">发布者:</th>

                                <td><input class="common-text" placeholder="发帖人姓名" name="uname" type="text"></td>

                                <td><input class="btn btn-primary btn2" name="sub" value="查询" type="submit"></td>

                            </tr>

                        </table>

                    </form>

                </div>

            </div>

            <div class="result-wrap">

                <form name="myform" id="myform" method="post">

                    <div class="result-title">

                        <div class="result-list">

                            <a href="insert.html"><i class="icon-font"></i>新增作品</a>

                            <a id="batchDel" href="javascript:void(0)"><i class="icon-font"></i>批量删除</a>

                            <a id="updateOrd" href="javascript:void(0)"><i class="icon-font"></i>更新排序</a>

                        </div>

                    </div>

                    <div class="result-content">

                        <table class="result-tab" width="100%" style="text-align:center;">

                            <tr>

                                <th style="text-align:center;">编号ID</th>

                                <th style="text-align:center;">标题</th>

                                <th style="text-align:center;">发布者</th>

                                <th style="text-align:center;">时间</th>

                                <th style="text-align:center;">操作</th>

                            </tr>

                            <!-- 判断帖子是否隐藏或者显示 -->

    <?php foreach($bbs_posts as $k=>$v): ?>

                            <tr>

                                <td>{$v['pid']}</td>

                                <td>

    <?php

    // 置顶设置图片输出

    if($v['is_ding']){

    echo '<img style="margin-bottom:18px;" src="/Public/Admin/images/ding.png">';

    }

    echo $v['title'];

    ?>

    <?php

    // 加精设置图片输出

    if($v['is_jing']){

    echo '<img style="margin-top:18px;" src="/Public/Admin/images/jh.png">';

    }

    ?>

                                </td>

                                <td>

                                <?php

                                $uid = $v['uid'];

                                $bbs_user = M('bbs_user')->where("uid=$uid")->find();

                                echo $bbs_user['uname'];

                                ?>

                                </td>

                                <td>{:date('Y-m-d H:i:s',$v['created_at'])}</td>

                                <td>

                                    <a class="link-update" href="/index.php?m=admin&c=post&a=edit&pid={$v['pid']}">修改</a>

                                    <a class="link-del" href="/index.php?m=admin&c=post&a=delete&pid={$v['pid']}">删除</a>

    <!-- 是否加精 -->

                                  <?php if($v['is_jing']):?>

                                    <a class="link-del" href="/index.php?m=admin&c=post&a=nojing&pid={$v['pid']}">取消加精</a>

                                    <?php else: ?>

                                    <a class="link-del" href="/index.php?m=admin&c=post&a=yesjing&pid={$v['pid']}">加精</a>

                                  <?php endif; ?>

    <!-- 是否置顶 -->

    <?php if($v['is_ding']): ?>

                                    <a class="link-del" href="/index.php?m=admin&c=post&a=noding&pid={$v['pid']}">取消置顶</a>

    <?php else: ?>

                                    <a class="link-del" href="/index.php?m=admin&c=post&a=yesding&pid={$v['pid']}">置顶</a>

                                <?php endif; ?>

                                    <!-- 是否隐藏 -->

                                    <?php if($v['is_cang']): ?>

                                    <a class="link-del" href="/index.php?m=admin&c=post&a=nocang&pid={$v['pid']}">隐藏</a>

                                    <?php else: ?>

                                    <a class="link-del" href="/index.php?m=admin&c=post&a=yescang&pid={$v['pid']}">显示</a>

                                    <?php endif; ?>

                                    <!-- 查看回复 -->

                                    <a class="link-del" href="/index.php?m=admin&c=post&a=hf_index&pid={$v['pid']}">查看回复</a>

                                </td>

                            </tr>

    <?php endforeach; ?>

                        </table>

                        <div class="list-page"><?= $show ?></div>

                    </div>

                </form>

            </div>

        </div>

        <!--/main--> </block>

    /**************************************************************************************************************/

    查看回复的帖子

    1.创建Controller控制器中的 hf_index方法

    public function hf_index(){}

    2.接收get地址的ID

    $pid = $_GET['pid'];

    3.查询到回复帖子的数据表get地址ID的这条信息

    $bbs_reply = M('bbs_reply')->where("pid=$pid")->select();

    4.判断bbs_reply是否为空

    if(!empty($bbs_reply)){...}

    5.从bbs_reply中获取到bbs_user表中的主键uid

    $bbs_reply = array_column($bbs_reply,'uid');

    6.取出重复的信息

    $reply_uid = array_unique($reply_uid);

    7.使用in方法查询bbs_user中的uid在reply_uid这个数组内对应的ID信息

    $in_uid['uid'] = ['in',$reply_uid];

    8.获取bbs_user表里面的uname名称

    $bbs_users = M('bbs_user')->where($in_uid)->getField('uid,uname');

    9.分配变量

    $this->assign('bbs_users',$bbs_users);

    10.显示html页面

    $this->display();

    例如:

    1.创建控制器中的hf_index方法

    public function hf_index()

    {

    2.获取get地址传过来的ID

    $pid = $_GET['pid'];

    3.获取bbs_reply数据表中通过get地址ID传过来的数据信息

    $bbs_reply = M('bbs_reply')->where("pid=$pid")->select();

    4.判断bbs_replay是否为空

    if(!empty($bbs_reply)){

    5.从bbs_reply中获取到bbs_user表中的主键uid

    $reply_uid = array_column($bbs_reply,'uid');

    6.取出重复的信息

    $reply_uid = array_unique($reply_uid);

    7.使用in方法查询到bbs_user表中的uid在bbs_reply这个数组内的信息

    $in_uid = ['in',$reply_uid];

    }

    8.获取bbs_user表里面对应的uname名称

    $bbs_users = M('bbs_user')->where($in_uid)->getField('uid,uname');

    9.分配变量

    $this->assign('bbs_users',$bbs_users);

    10.显示html页面

    $this->display();

    }

    例如2:获取三个表在数组内的信息

    // 查看回复的帖子信息

    public function hf_index()

    {

    // 查看回复

    $pid = $_GET['pid'];

    // 查看reply数据库信息

    $bbs_reply = M('bbs_reply')->where("pid=$pid")->select();

    if(!empty($bbs_reply) ){

    // 数组 从reply表中获取user表中的uid

    $reply_uid = array_column($bbs_reply,'uid');

    // 数组 从replay表中获取post表中的pid

    $reply_pid = array_column($bbs_reply,'pid');

    // 去除重复信息

    $reply_uid = array_unique($reply_uid);

    //去除重复信息

    $reply_pid = array_unique($reply_pid);

    // 去bbs_user数据表中查出uid在reply_uid这个数组内的信息 用in

    $in_uid['uid'] = ['in',$reply_uid];

    // 去bbs_post数据表中查出uid在reply_pid这个数组内的信息 用in

    $in_pid['pid'] = ['in',$reply_pid];

    }

    // 获取bbs_user表里面的uname名称

    $bbs_users = M('bbs_user')->where($in_uid)->getField('uid,uname');

    // 获取bbs_post表里面的title名称

    $bbs_posts = M('bbs_post')->where($in_pid)->getField('pid,title');

    // 分配变量

    $this->assign('bbs_reply',$bbs_reply);

    // 分配变量

    $this->assign('bbs_users',$bbs_users);

    // 分配变量

    $this->assign('bbs_posts',$bbs_posts);

    // 显示html页面

    $this->display();

    }

    在html如何遍历回复帖子的信息

    <!-- 继承 -->

    <extend name="Index/index" />

    <!-- 替换 -->

    <block name="mail">

    <!--/sidebar-->

        <div class="main-wrap">

            <div class="crumb-wrap">

                <div class="crumb-list"><i class="icon-font"></i><a href="index.html">首页</a><span class="crumb-step">&gt;</span><span class="crumb-name">作品管理</span></div>

            </div>

            <div class="search-wrap">

                <div class="search-content">

                    <form action="#" method="post">

                        <table class="search-tab">

                            <tr>

                                <th width="120">选择分类:</th>

                                <td>

                                    <select name="search-sort" id="">

                                        <option value="">全部</option>

                                        <option value="19">精品界面</option><option value="20">推荐界面</option>

                                    </select>

                                </td>

                                <th width="70">关键字:</th>

                                <td><input class="common-text" placeholder="关键字" name="keywords" value="" id="" type="text"></td>

                                <td><input class="btn btn-primary btn2" name="sub" value="查询" type="submit"></td>

                            </tr>

                        </table>

                    </form>

                </div>

            </div>

            <div class="result-wrap">

                <form name="myform" id="myform" method="post" >

                    <div class="result-title" >

                        <div class="result-list">

                            <a href="insert.html"><i class="icon-font"></i>新增作品</a>

                            <a id="batchDel" href="javascript:void(0)"><i class="icon-font"></i>批量删除</a>

                            <a id="updateOrd" href="javascript:void(0)"><i class="icon-font"></i>更新排序</a>

                        </div>

                    </div>

                    <div class="result-content">

                        <table class="result-tab" width="100%" style="text-align:center;">

                            <tr>

                                <th style="text-align:center;">编号ID</th>

                                <th style="text-align:center;">回复人员</th>

                                <th style="text-align:center;">帖子标题</th>

                                <th style="text-align:center;">回复内容</th>

                                <th style="text-align:center;">更新时间</th>

                                <th style="text-align:center;">操作</th>

                            </tr>

                            <!-- 此处是循环体 查出 三个表的信息-->

                            <?php foreach($bbs_reply as $k=>$v): ?>

                            <tr>

                                <td>{$v['pid']}</td>

    <!-- 发布人员 -->

                                <td>

    <?php

    $uid = $v['uid'];

    echo $bbs_users[$uid];

    ?>

    </td>

    <!-- 帖子标题 -->

                                <td>

                                <?php

                                $pid = $v['pid'];

                                echo $bbs_posts[$pid];

                                ?>

                                </td>

                                <td>{$v['message']}</td>

                                <td>{:date('Y-m-d H:i:s',$v['updated_at'])}</td>

                                <td>

                                    <a class="link-update" href="/index.php?m=admin&c=post&a=edits&rid={$v['rid']}">修改</a>

                                    <a class="link-del" href="/index.php?m=admin&c=post&a=deletes&rid={$v['rid']}">删除</a>

                                </td>

                            </tr>

                        <?php endforeach; ?>

                        </table>

                        <div class="list-page"> 2 条 1/1 页</div>

                    </div>

                </form>

            </div>

        </div>

        <!--/main-->

        </block>

    /****************************************************************************************************************/

    相关文章

      网友评论

          本文标题:ThinkPHP3.2基础知识

          本文链接:https://www.haomeiwen.com/subject/zsnaqctx.html