TP5数据库中什么方法实现无限分类
Admin 2022-06-30 群英技术资讯 753 次浏览
很多朋友都对“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>
<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>
<?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;
}
}
}
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
本篇文章小编给大家分享一下Python中的enum代码使用方法,文章代码介绍的很详细,小编觉得挺不错的,现在分享给大家供大家参考,有需要的小伙伴们可以来看看。
本篇文章给大家带来了Laravel的相关知识,其中主要介绍了Laravel队列、在什么情况下使用队列、配置队列储存等相关问题,希望对大家有帮助。
这篇文章给大家分享PHP函数的应用,主要介绍php如何实现获取汉字首字母功能代码,具有一定的借鉴参考价值,感兴趣的朋友不妨看看,下面就跟随小编一起来了解一下吧。
本篇文章小编给大家分享一下python使用pip成功导入库后还是报错解决方法,文章代码介绍的很详细,小编觉得挺不错的,现在分享给大家供大家参考,有需要的小伙伴们可以来看看。
PHP中实现输出偶奇数的方法及代码是什么,下文有实例供大家参考,对大家了解操作过程或相关知识有一定的帮助,而且实用性强,希望这篇文章能帮助大家,下面我们一起来了解看看吧。
成为群英会员,开启智能安全云计算之旅
立即注册Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008