您好,登錄后才能下訂單哦!
這期內容當中小編將會給大家帶來有關怎么在TP5數據庫中實現一個無限分類,文章內容豐富且以專業的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。
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> <h2>四個字段的無限分類</h2> <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/> 請填寫分類的名稱:<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)')自動排序 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個字段 /* ID PID NAME PATH 1 0 服裝 0-1 2 0 游戲 0-2 3 1 男裝 0-1-3 4 3 上衣 0-1-3-4 */ }}
還有一個沒有寫完的遞歸無限分類
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(){ //執行添加數據 $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; } #拼裝屬性結構 #通過一個數組組裝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>"; #判斷該分類下是否包含子類,如果有子類,將數組傳入接著拼裝 if(!empty($case['cates'])){ $i++; $opt.=$this->getOption($case['cases']); }else{ $i=0; } return $opt; } } }
上述就是小編為大家分享的怎么在TP5數據庫中實現一個無限分類了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關知識,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。