时间:2021-05-25
效果:
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 html><html lang="en"><head> <meta charset="UTF-8"> <title>Document</title></head><body> <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} </select><br/> 请填写分类的名称:<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 &$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个字段 }}还有一个没有写完的递归无限分类
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 &$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数据库中四个字段实现无限分类的示例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
本文实例讲述了thinkPHP5实现的查询数据库并返回json数据。分享给大家供大家参考,具体如下:TP5实现查询数据库返回json数据(返回json数据函数实
本文实例为大家分享了thinkphp实现无限分类的详细代码,希望对大家学习无限分类有所启发。数据库:test数据表:(tp_category):Common/c
本文实例讲述了tp5(thinkPHP5)框架实现多数据库查询的方法。分享给大家供大家参考,具体如下:引言:有时候一个管理后台,需要涉及到多个数据库。比如,商城
最近在做一个视频网站,需要实现视频的点赞功能,我是结合ajax和数据库实现的,数据库的格式为有四个字段:文章id,赞,踩,ip。因为需要一个ip只能点赞一次,所
本文实例讲述了PHP实现的无限分类类库定义与用法。分享给大家供大家参考,具体如下:/*功能:基于TP2.0的无限分类。用法:第一种用法,不采用数据库,可以不需要