软件开发|编程技术|编程代码|编程入门先学什么—程序设计语言

在TP5数据库中四个字段实现无限分类的示例

今天小编就为大家分享一篇在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=MyISAMDEFAULT CHARACTER SET=utf8 COLLATE=utf8_general_ciAUTO_INCREMENT=53CHECKSUM=0ROW_FORMAT=DYNAMICDELAY_KEY_WRITE=0;
!DOCTYPE htmlhtml lang="en"head meta charset="UTF-8" titleDocument/title/headbody h1四个字段的无限分类/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}  /selectbr/   请填写分类的名称:input type="text" name="name"//br input type="submit" value="添加" /form /body/html
phpnamespace 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   $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

phpclass CategoryModel extends Model{   #通过上级分类的主键id号查询子类 public function getTree($pid=0){ $data=$this-where('pid='.$pid)-select(); foreach($data as 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数据库中四个字段实现无限分类的示例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。