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']}』 </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">></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">></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>
/****************************************************************************************************************/
网友评论