TP笔记5、模型 文件上传 分页 会话技术与验证码
生活随笔
收集整理的這篇文章主要介紹了
TP笔记5、模型 文件上传 分页 会话技术与验证码
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
1 模型
1.1 模型中的事務(wù)處理
public function test13(){$model=D('Goods');//開啟事務(wù)$model->startTrans();$res1=$model->where('goods_id=4')->save(array('goods_name'=>'testAgain'));$res2=$model->where('goods_id=5')->save(array('goods_name'=>'testAgain'));if($res1!==false && $res2!==false){$model->commit();//提交事務(wù)}else{$model->rollback();//事務(wù)回滾}}1.2 TP的連貫操作
- 格式:模型對象->連貫方法->curd方法
1.3 連表查詢
使用join方法(連接方式、指定數(shù)據(jù)表、連接字段)
public function test15(){//join方法實(shí)現(xiàn)連表查詢//join(連接方式、指定數(shù)據(jù)表、鏈接字段)$data=M('Stu')->alias('a')->field('a.*,b.class_name,b.class_room')->join('left join shop_class b on a.class_id=b.stu_id')->select();dump($data);}1.4 TP使用原生SQL語句
1.5 模型中的鉤子函數(shù)
- 數(shù)據(jù)操作(寫入、刪除、修改)時會自動觸發(fā)鉤子函數(shù)。
- 鉤子函數(shù)分前置和后置
- 前置在操作前執(zhí)行,后置即在操作后執(zhí)行
| 寫入 | before_insert | after_insert |
| 修改 | before_updatet | after_update |
| 刪除 | before_delete | after_delete |
在IndexController.php中寫入:
public function test17(){$model=D('Goods');$res=$model->add(array('goods_name'=>'testNike'));}在GoodsModel.php中寫入:
//數(shù)據(jù)寫入的前置鉤子函數(shù)public function _before_insert(&$data,$options){echo '_before_insert'.'<hr>';dump($data);dump($options);}//數(shù)據(jù)寫入的后置鉤子函數(shù)public function _after_insert($data,$options){echo '_after_insert'.'<hr>';dump($data);dump($options);}2 TP文件上傳
- 源碼地址:ThinkPHP\Library\Think\Upload.class.php
在add.html中寫入:
<div class="formbody"><form action="" method="post" enctype="multipart/form-data"><ul class="forminfo"><li><label>商品名稱<input name="name" type="text" class="dfinput" /><i>標(biāo)題不能超30個字符</i></label></li><li><label>圖片價格<input name="goods_price" type="text" class="dfinput" /></label></li><li><label>圖片地址<input name="pic" type="file" class="dfinput" value="jklj"/></label></li><li><label>內(nèi)容<textarea name="body" cols="" rows="" class="textinput" ></textarea></label></li><li><label> <input name="submit" type="submit" class="btn" value="保存"/></label></li></ul></form> </div>在GoodsController.php中寫入:
public function add(){if(IS_GET){$this->display();}else{//post表單提交$model=D('Goods');//定義自動完成規(guī)則$auto=array(array('addtime','time',1,'function'));$data=$model->auto($auto)->create();//$this->display();if(!$data){//說明目前有數(shù)據(jù)格式不滿足要求//獲取錯誤信息$this->error(($model->getError()));}$res=$model->add($data);if(!$res){//寫入失敗$this->error($model->getError());}$this->success('寫入數(shù)據(jù)成功');}}在GoodsModel.php中寫入:
//數(shù)據(jù)寫入的前置鉤子函數(shù)public function _before_insert(&$data,$options){//實(shí)現(xiàn)文件上傳功能//1、實(shí)例化對象$config=array('exts'=>array('jpg','gif'),//設(shè)置上傳文件后綴限制);$upload=new \Think\Upload($config);//2、使用對象調(diào)用方法實(shí)現(xiàn)上傳功能//關(guān)于文件上傳根目錄需要手動創(chuàng)建(在項(xiàng)目根目錄創(chuàng)建Uploads目錄)$info=$upload->uploadOne($_FILES['pic']);if(!$info){//說明文件上傳失敗$this->error=$upload->getError();return false;}//將上傳后的文件信息保存到$data中$data['goods_img']='Uploads/'.$info['savepath'].$info['savename'];}- 測試:
在add.html寫入數(shù)據(jù)
提交打印出信息
數(shù)據(jù)表數(shù)據(jù)添加成功
圖片也保存成功
3 TP分頁功能
3.1 分頁前提
在GoodsController.php中寫入:
public function index(){$model=D('Goods');//獲取所有商品信息$data=$model->select();$this->assign('data',$data);$this->display();}在Admin\View\Goods\index.html中寫入:
<table class="table"><thead><tr><th>編號</th><th>商品名稱</th><th>圖片信息</th><th>發(fā)布時間</th><th>內(nèi)容</th><th>操作</th></tr></thead><tbody><volist name="data" id="vo"><tr><td>{$vo.goods_id}</td><td>{$vo.goods_name}</td><td><img src="/{$vo.goods_img}" height="50" width="50"></td><td>{$vo.addtime|date="Y-m-d H:i:s",###}</td><td>{$vo.goods_body}</td><td><a href="#" class="tablelink">查看</a><a href="#" class="tablelink">刪除</a></td></tr></volist></tbody> </table>3.2 分頁步驟
修改GoodsController.php
public function index(){$model=D('Goods');//1、計算總記錄數(shù)$count=$model->count();//2、實(shí)例化分頁類對象$pagesize=2;//每一頁顯示數(shù)據(jù)條數(shù)$page=new \Think\Page($count,$pagesize);//3、使用對象調(diào)用show方法獲取分頁導(dǎo)航信息$show=$page->show();$this->assign('show',$show);//4、根據(jù)當(dāng)前頁,顯示對應(yīng)信息$p=I('get.p');//等價于$_GET['p'],獲取當(dāng)前頁碼//page方法可以根據(jù)當(dāng)前頁碼以及每頁顯示條數(shù)自動計算偏移量$data=$model->page($p,$pagesize)->select();echo $model->getLastSql();//獲取所有商品信息//$data=$model->select();$this->assign('data',$data);$this->display();}在Admin\View\Goods\index.html中添加:
<div class="pagin">{$show} </div>4 TP中的會話技術(shù)
4.1 session
session(‘name’,‘value’);//設(shè)置session
$value=session(‘name’);
$value=-session(); //獲取所有session信息
session(‘name’,null);
session(null);//全部刪除
4.2 cookie
session(‘name’,‘value’);//設(shè)置cookie
session(‘name’,‘value’,3600);//指定cookie有效期
$value=cookie(‘name’);
cookie(‘name’,null);
cookie(null);//清空當(dāng)前設(shè)定前綴的所有cookie
cookie(null,‘think_’);//清空指定前綴的所有cookie
5 TP的驗(yàn)證碼
- 注意確保gd庫開啟
- 步驟
總結(jié)
以上是生活随笔為你收集整理的TP笔记5、模型 文件上传 分页 会话技术与验证码的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mkv格式怎么转换成mp4?mkv转mp
- 下一篇: 英语语法笔记——冠词