thinkphp之无限分类】的更多相关文章

namespace Home\Controller; use Home\Controller; class CategoryController extends Controller { //无限分类读取导航 protected function getCategory() { //实例化导航模型 $category = M("category"); //定义并且执行SQL,返回结果为数组 $sql="SELECT title,catid,catname,listorder,…
thinkphp实现无限极分类,获得所有的子类 今天学习测试了一上午也没有整出来,一开始一直没有办法把所有的子分类拿出来. 最后找到原因: 每次调用的时候没有在最后return的位置我没有选择return,而是选择在这个位置print_r($arr); 收获:递归函数一定要有返回值 thinkphp3.2版本中实现无限极分类: Public function getChildSort ($data, $pid) { $arr = array(); foreach ($data as $v) {…
public function catelist(){ $cate=D('Cate'); //var_dump($cate->gettree());exit; $cateres=$cate->gettree(); $this->assign('cateres',$cateres); $this->display(); } 上面是很普通的数据库显示api操作.就把数据库的数据显示出来.要设计无限分类,首先,在model层定义一个gettree方法 //商品分类中查询的公共方法---无…
//新闻类别管理 public function new_classify() { $arr = M('news_classify')->where("fid = 0")->select(); $html = '<ul class="easyui-tree"><li><span>新闻中心</span><ul>'; if (!empty($arr)) { $html .= $this->_t…
MySql无限分类数据结构--预排序遍历树算法 无限分类是我们开发中非常常见的应用,像论坛的的版块,CMS的类别,应用的地方特别多. 我们最常见最简单的方法就是在MySql里ID ,parentID,name.其优点是简单,结构简单:缺点是效率不高,因为每一次递归都要查询数据库,几百条数据时就不是很快了! 存储树是一种常见的问题,多种解决方案.主要有两种方法:邻接表的模型,并修改树前序遍历算法.  我们将探讨这两种方法的节能等级的数据.我会使用树从一个虚构的网上食品商店作为一个例子.这食品商店组…
TreeView递归绑定无限分类数据 实现一个动态绑定,无限级分类数据时,需要将数据绑定到TreeView控件,分类表的结构是这样的: 字段 类型 Id int ParentId int Name Nvarchar(64) 实现数据绑定: private void ControlsDataBind() { tvCategory.Nodes.Clear(); List<Models.Category> types = CommonNews.Helper.OperateContext.Curren…
首先创建无限分类的数据表,我这里采用的是id.name.pid这种类型(当然还有很多种无限分类的方式了,比如:id.name.pid.path.left.right左右节点的形式) CREATE TABLE `class` ( `id` int(10) unsigned NOT NULL auto_increment, `name` varchar(128) default NULL, `pid` int(11) default NULL, PRIMARY KEY (`id`) ) ENGINE…
数组:  代码如下 复制代码 $items = array( array('id' => 1, 'pid' => 0, 'name' => '一级11' ), array('id' => 11, 'pid' => 0, 'name' => 'www.111cn.net 一级12' ), array('id' => 2, 'pid' => 1, 'name' => '二级21' ), array('id' => 10, 'pid' => 11…
无限分类是个老话题了,来看看PHP结合Mysql如何实现.第一种方法这种方法是很常见.很传统的一种,先看表结构表:categoryid int 主键,自增name varchar 分类名称pid int 父类id,默认0顶级分类的 pid 默认就是0了.当我们想取出某个分类的子分类树的时候,基本思路就是递归,当然,出于效率问题不建议每次递归都查询数据库,通常的做法是先讲所有分类取出来,保存到PHP数组里,再进行处理,最后还可以将结果缓存起来以提高下次请求的效率.先来构建一个原始数组,这个直接从数…
<?php /** * @param php全路径无限分类 */ include('db.inc.php'); function getPathCate($cateid){ $sql = "select * ,concat(path,',',id) fullpath from likecate where id = $cateid"; $res = mysql_query($sql); $row = mysql_fetch_assoc($res); $ids = $row['fu…
全路径无限分类:以一个字段把他所有的父级id按顺序记录下来以此实现的无限分类叫做全路径无限分类 优点:查询方便 缺点:增加,移动分类时数据维护时稍微复杂.…
1. 代码数据库的结构: 2.要达到的效果 /** * @param php无限分类分类导航LINK的代码实现 */ include('db.inc.php'); function getCatePath($cid,&$result=array()){ $sql = "select * from deepcate where id = $cid"; $rs = mysql_query($sql); $row = mysql_fetch_assoc($rs); if($row){…
无限分类,是指从一个最高分类开始,每个子分类都可以分出自己的若干个子分类,可以一直分下去,称为无限级分类: 下面是对省市县的无限极分类的列子.数据库如图: 代码示例如下: /** * @Description: 无限极分类一 * @Author: Yang * @param $data 数据库数据 * @param int $parent_id 父级ID * @return array */ function getTree1($data, $parent_id = 0) { $tree = a…
无限分类 下拉框优势:填写参数少,只需要指定一个循环节点($parnent_id),就可以循环所有下级分类.循环输出结构很有特色,比较符合我的口味.补充: $parent_id才是上下级关联的节点,id,name不用管它php代码 public function CycleData($parent_id=0){ $where['parent_id'] = $parent_id; $res = M()->where($where)->select();; if(empty($res)) retu…
无限分类是什么就不废话了,可以用递归实现,但是递归从数据库取东西用递归效率偏低,如果从表设计入手,就很容易做到网站导航的实现,下面是某论坛导航,如下图 网上无限分类大多不全面,今天我会从设计表开始, 首先我们先做视图界面, <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>白超华-博客园</title> &…
PHP实现无限分类 无限分类 递归 无限级分类是一种设计技巧,在开发中经常使用,例如:网站目录.部门结构.文章分类.笔者觉得它在对于设计表的层级结构上面发挥很大的作用,比如大家在一些平台上面,填写邀请人,它就是一种上下级的关系,上级会有多个下级,下级又会有自己的分支,大多数都是利用递归的思想去实现.话不多说,首先来温故一下递归的实现. 递归(程序调用自身的编程技巧): 1.$_GLOBALS[result] 2.static $result 3.参数引用& 举例:遍历1-10 $i=0;  fu…
转自:PHP在无限分类时注意的一些问题(http://lxiaoke.cn) (注意:代码使用的是原生PHP,旨在提供解决思路)1 无限分类的查找(获取所有节点) 代码: /** * 无限分类查询,默认 pid 为 0 * @param $pid * @return array $res */ protected function selectTree($pid = 0) { $res = []; $sql = "SELECT * FROM " . $this->tbname .…
创建数据库以及表 CREATE DATABASE `sortclass`DEFAULT CHARSET utf8; CREATE TABLE IF NOT EXISTS `class` ( `cid` mediumint() unsigned NOT NULL auto_increment, `pid` mediumint() unsigned NOT NULL, `cname` ) NOT NULL, PRIMARY KEY (`cid`), KEY `pid` (`pid`) ) ENGIN…
laravel-nestedset:多级无限分类正确姿势   laravel-nestedset是一个关系型数据库遍历树的larvel4-5的插件包 目录: Nested Sets Model简介 安装要求 安装 开始使用 迁移文件 插入节点 获取节点 删除节点 一致性检查和修复 作用域 Nested Sets Model简介 Nested Set Model 是一种实现有序树的高明的方法,它快速且不需要递归查询,例如不管树有多少层,你可以仅使用一条查询来获取某个节点下的所有的后代,缺点是它的插…
//递归无限分类树 public static function diGui($data, $pid) { $arr = collect([]); if (empty($data)) { return ''; } foreach ($data as $key => $value) { if ($value['parent_id'] == $pid) { $value['submenu'] = self::diGui($data, $value['id']); $arr[] = $value; }…
商品分类,使用无限分类 即: -------如何创建数据表 pid---父级分类id,如果是顶级分类则为0 path---1,用户分类的排序 . 排序示例: 实现逻辑:获取type表的所有分类,order by path ,   得到了type列表,然后path有几个逗号就加几个---, 这样,父级分类下就是子级分类,子级分类下是孙级分类,分类得到了有效的排序. 2,点击父级分类,展示所有它和它的所有子级分类所辖的商品 实现逻辑: 子级分类的path  like %父级分类的path%,再通过w…
* 根据php无限分类实现js版本的 /** * 根节点 parentid=0, 每个节点都有id, parentid字段 * @param items * @returns {*} */ function getTree(items) { "use strict"; var children = new Map(); items.forEach(function(item){ if (children.has(item.parentid)) { children.get(item.p…
一直以来对cms后台的栏目管理不太理解,尤其是子栏目顶级栏目这种关系,通过网上的搜索与自己的摸索,实现方法如下(原理是利用数据库的path字段): 1.建立简单的栏目表: CREATE TABLE `self_cd`( `id` INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, `name` ) NOT NULL, `pid` ', `path` TEXT NOT NULL ) ENGINE = MYISAM ; 2.建立CdModel.clas…
无限循环 1.需要套2个foreach 2.2个foreach结构一样 纯代码获取数据 ){ $where['parent_id']= $parent_id; $res = $this->m->where($where)->field('id,name')->select(); foreach($res as $k=>$v){ $result[$v['id']]['id'] = $v['id']; $result[$v['id']]['name'] = $v['name'];…
1.读取数据数据 /** * 所有分类数据 * */ public function categoryData(){ $order = 'id,sort asc'; $res = $this->db->cache($this->cache)->order($order)->select(); return $data; } 结构如下 Array ( [] => Array ( [id] => [pid] => [name] => 新闻40 [desc]…
控制器 <?php // 本类由系统自动生成,仅供测试用途 class IndexAction extends Action { public function index(){ $cate=M('wzfl'); $list=$cate->field("id,name,pid,path,concat(path,'-',id) as bpath")->order('bpath')->select(); foreach($list as $key=>$valu…
在MVC的Razor视图展示无级分类的办法,在网上看了很多资料,大多搞得很高大上.可能本人水平有限,实在是不会用. 那我就用最简单爆力的办法来做. Model: public class NewsCategory { [Key] public int CategoryId { get; set; } public int ParentCategoryId { get; set; } [Required] [StringLength()] public string CategoryName {…
对ecshop无限级分类的解析,认真分析后发现真的其算法还是比较精典的其实并不难理解,有举例方便大家理解 function cat_options($spec_cat_id, $arr) { static $cat_options = array(); if (isset($cat_options[$spec_cat_id])) { return $cat_options[$spec_cat_id]; } /* 初始化关键参数: $level:当前子节点深度 $last_cat_id:当前父节点…
普通的方法(采用for和foreach) //显示 foreach($data as $k=>$v){ //str_repeat()函数用于把字符串重复指定的次数 $data[$k]['title']=str_repeat('---',$v['type']-1).$v['title']; } 无限级分类的设计思路: 为了能够使得栏目的管理更加动态化,在这里可以设置添加栏目,添加的数据库中设计一个名为pid的字段,便于新添加的栏目可以找到他的父栏目.如果是顶级的栏目,则pid为0.再提取数据显示的…
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="ProductSort.aspx.cs" Inherits="ChaoFenPlat_ProductSort" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w…