您好,登錄后才能下訂單哦!
這期內(nèi)容當(dāng)中小編將會(huì)給大家?guī)?lái)有關(guān)怎么在TP5數(shù)據(jù)庫(kù)中實(shí)現(xiàn)一個(gè)無(wú)限分類(lèi),文章內(nèi)容豐富且以專(zhuān)業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。
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>四個(gè)字段的無(wú)限分類(lèi)</h2> <form action="{:url('add')}" method="post"> 請(qǐng)選擇上級(jí)分類(lèi):<select name="pid"> <option value="0">頂級(jí)分類(lèi)</option> {foreach $cates as $vo} <option value={$vo.id}>|{$vo.pre}{$vo.name}</option> {/foreach} </select><br/> 請(qǐng)?zhí)顚?xiě)分類(lèi)的名稱(chēng):<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() { //添加分類(lèi)的界面 //查詢(xún)所有的分類(lèi) $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è)沒(méi)有寫(xiě)完的遞歸無(wú)限分類(lèi)
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{ #通過(guò)上級(jí)分類(lèi)的主鍵id號(hào)查詢(xún)子類(lèi) public function getTree($pid=0){ $data=$this->where('pid='.$pid)->select(); foreach($data as &$cate){ #通過(guò)該分類(lèi)的主鍵id查詢(xún)?cè)摲诸?lèi)的子類(lèi) $cate['cates']=$this->getTree($cate['id']); } return $data; } #拼裝屬性結(jié)構(gòu) #通過(guò)一個(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>"; #判斷該分類(lèi)下是否包含子類(lèi),如果有子類(lèi),將數(shù)組傳入接著拼裝 if(!empty($case['cates'])){ $i++; $opt.=$this->getOption($case['cases']); }else{ $i=0; } return $opt; } } }
上述就是小編為大家分享的怎么在TP5數(shù)據(jù)庫(kù)中實(shí)現(xiàn)一個(gè)無(wú)限分類(lèi)了,如果剛好有類(lèi)似的疑惑,不妨參照上述分析進(jìn)行理解。如果想知道更多相關(guān)知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。