效果:
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"> 請選擇上級分類:select name="pid"> option value="0">頂級分類/option> {foreach $cates as $vo} option value={$vo.id}>|{$vo.pre}{$vo.name}/option> {/foreach} /select>br/> 請?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{ #通過上級分類的主鍵id號查詢子類 public function getTree($pid=0){ $data=$this->where('pid='.$pid)->select(); foreach($data as $cate){ #通過該分類的主鍵id查詢該分類的子類 $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)無限分類的示例就是小編分享給大家的全部內(nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
標(biāo)簽:金華 香港 阿克蘇 通化 自貢 寶雞 郴州 佳木斯
巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《在TP5數(shù)據(jù)庫中四個(gè)字段實(shí)現(xiàn)無限分類的示例》,本文關(guān)鍵詞 在,TP5,數(shù)據(jù)庫,中,四個(gè),字段,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。