在TP5數(shù)據(jù)庫中四個(gè)字段實(shí)現(xiàn)無限分類的示例
效果:
CREATE TABLE `NewTable` ( `id` int(11) UNSIGNED NOT NULL AUTO_INCREMENT , `pid` int(10) UNSIGNED ZEROFILL NOT NULL , `name` varchar(30) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL , `path` varchar(200) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL , PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARACTER SET=utf8 COLLATE=utf8_general_ci AUTO_INCREMENT=53 CHECKSUM=0 ROW_FORMAT=DYNAMIC DELAY_KEY_WRITE=0 ;
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> </head> <body> <h1>四個(gè)字段的無限分類</h1> <form action="{:url('add')}" method="post"> 請(qǐng)選擇上級(jí)分類:<select name="pid"> <option value="0">頂級(jí)分類</option> {foreach $cates as $vo} <option value={$vo.id}>|{$vo.pre}{$vo.name}</option> {/foreach} </select><br/> 請(qǐng)?zhí)顚懛诸惖拿Q:<input type="text" name="name"/></br> <input type="submit" value="添加"> </form> </body> </html>
<?php namespace app\index\controller; use think\Db; use think\Controller; use app\model\Category; class Index extends Controller { public function index() { //添加分類的界面 //查詢所有的分類 $db=Db::name('categroy'); $data=$db->order('concat(path,"-",id)')->select(); #order('concat(path,"-",id)')自動(dòng)排序 foreach ($data as &$cate) { $prefix=''; $i=count(explode("-", $cate['path'])); for($n=0;$n<=$i;$n++){ $prefix.="--"; } $cate['pre']=$prefix; } $this->assign('cates',$data); return $this->fetch(); } public function add(){ $db=Db::name('categroy'); if($_POST['pid']==0){ $_POST['path']=0; }else{ $_POST['path']=$db->where('id='.$_POST['pid'])->value('path')."-".$_POST['pid']; } $name=$_POST['name']; if($db->insert($_POST)){ $this->success('添加成功'); }else{ $this->error('添加失敗'); } #原理:4個(gè)字段 /* ID PID NAME PATH 1 0 服裝 0-1 2 0 游戲 0-2 3 1 男裝 0-1-3 4 3 上衣 0-1-3-4 */ }}
還有一個(gè)沒有寫完的遞歸無限分類
public function user(){ $db=Db::name('categroy1'); // $data=$db->getTree(); $opt=$db->getOption($data); $this->assign('opt',$opt); $this->assign('cates',$data); return $this->fetch(); } public function doAdd(){ //執(zhí)行添加數(shù)據(jù) $db=Db::name('categroy1'); if($db->insert()){ $this->success('添加成功',url('index')); }else{ $this->error('添加失敗',url('index')); } return $this->fetch(); }
Model
<?php class CategoryModel extends Model{ #通過上級(jí)分類的主鍵id號(hào)查詢子類 public function getTree($pid=0){ $data=$this->where('pid='.$pid)->select(); foreach($data as &$cate){ #通過該分類的主鍵id查詢?cè)摲诸惖淖宇? $cate['cates']=$this->getTree($cate['id']); } return $data; } #拼裝屬性結(jié)構(gòu) #通過一個(gè)數(shù)組組裝option public function getOption($data){ static $i=0; for($n=0;$n<=$i*2;$n++){ $prefix.="-"; } foreach ($data as $cate) { $opt.="<option value='".$cate['id']."'>".$prefix.$cate['name']."</option>"; #判斷該分類下是否包含子類,如果有子類,將數(shù)組傳入接著拼裝 if(!empty($case['cates'])){ $i++; $opt.=$this->getOption($case['cases']); }else{ $i=0; } return $opt; } } }
以上這篇在TP5數(shù)據(jù)庫中四個(gè)字段實(shí)現(xiàn)無限分類的示例就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
- tp5(thinkPHP5)框架數(shù)據(jù)庫Db增刪改查常見操作總結(jié)
- tp5(thinkPHP5)框架實(shí)現(xiàn)多數(shù)據(jù)庫查詢的方法
- tp5(thinkPHP5)框架連接數(shù)據(jù)庫的方法示例
- tp5(thinkPHP5)操作mongoDB數(shù)據(jù)庫的方法
- thinkPHP5實(shí)現(xiàn)的查詢數(shù)據(jù)庫并返回json數(shù)據(jù)實(shí)例
- thinkPHP5實(shí)現(xiàn)數(shù)據(jù)庫添加內(nèi)容的方法
- TP5框架實(shí)現(xiàn)的數(shù)據(jù)庫備份功能示例
相關(guān)文章
thinkPHP使用post方式查詢時(shí)分頁失效的解決方法
這篇文章主要介紹了thinkPHP使用post方式查詢時(shí)分頁失效的解決方法,通過使用JavaScript動(dòng)態(tài)修改頁面元素結(jié)合thinkPHP查詢語句解決分頁失效的問題,需要的朋友可以參考下2015-12-12php 創(chuàng)建以UNIX時(shí)間戳命名的文件夾(示例代碼)
這篇文章主要介紹了php創(chuàng)建以UNIX時(shí)間戳命名的文件夾(示例代碼)。需要的朋友可以過來參考下,希望對(duì)大家有所幫助2014-03-03PHP實(shí)現(xiàn)中文轉(zhuǎn)拼音的方法
這篇文章運(yùn)用簡(jiǎn)單易懂的例子給大家介紹PHP將中文轉(zhuǎn)換成拼音的方法,代碼非常詳細(xì),感興趣的小伙伴們可以參考借鑒,希望對(duì)大家能有所幫助2023-11-11ThinkPHP關(guān)于session的操作方法匯總
這篇文章主要介紹了ThinkPHP關(guān)于session的操作方法,有助于讀者加深對(duì)ThinkPHP操作session的認(rèn)識(shí),需要的朋友可以參考下2014-07-07PHP中加速、緩存擴(kuò)展的區(qū)別和作用詳解(eAccelerator、memcached、xcache、APC )
這篇文章主要介紹了PHP中eAccelerator、memcached、xcache、APC 4個(gè)加速、緩存擴(kuò)展的區(qū)別的相關(guān)資料,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2016-07-07實(shí)例講解PHP設(shè)計(jì)模式編程中的簡(jiǎn)單工廠模式
這篇文章主要介紹了PHP設(shè)計(jì)模式編程中的簡(jiǎn)單工廠模式,舉了一個(gè)水果銷售和一個(gè)計(jì)算器設(shè)計(jì)的例子,需要的朋友可以參考下2016-02-02關(guān)于PHP中Session文件過多的問題及session文件保存位置
PHP的默認(rèn)機(jī)制:每一次php請(qǐng)求,會(huì)有1/100的概率(默認(rèn)值)觸發(fā)“session回收”。接下來通過本文給大家介紹關(guān)于PHP中Session文件過多的問題及session文件保存位置,需要的朋友參考下2016-03-03淺析PHP 中move_uploaded_file 上傳中文文件名失敗
這篇文章主要介紹了PHP 中move_uploaded_file 上傳中文文件名失敗的原因分析及解決方法 ,需要的朋友可以參考下2019-04-04再談Yii Framework框架中的事件event原理與應(yīng)用
這篇文章主要介紹了再談Yii Framework框架中的事件event原理與應(yīng)用,結(jié)合實(shí)例形式分析了再談Yii框架中的事件event相關(guān)原理、使用方法及操作注意事項(xiàng),需要的朋友可以參考下2020-04-04