美文网首页
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