Login
网站首页 > 文章中心 > 其它

php无限树状分类查找字段

作者:小编 更新时间:2023-08-03 07:28:51 浏览量:237人看过

PHP无限树形根统计数据

function?getlow($topid){

php无限树状分类查找字段-图1

$array=array();

$result=mysql_query('SELECT?*?FROM?+user+?WHERE?+topid+?=?'.$topid);

if(mysql_num_rows($result)?0){

while($a?=?mysql_fetch_array($result,MYSQL_ASSOC)){

$b=getlow($a['id']);

if(count($b)?0){

$array[$a['id']]=$b;

}else{

$array[$a['id']]=$a['id'];

}

return$array;

测试无误

请教高手:php实现n叉树遍历

php无限树状分类查找字段-图2

根据上面的图mysql中建立表和插入数据

CREATE TABLE ?+product_categories+ (

表结构如下:

下面是PHP的实例代码:

①.、获取所有节点

php

$pdo = new PDO(

'mysql:host=localhost;dbname=test',

'root',

''

);

$stmt = $pdo-prepare("SELECT c.name FROM product_categories as c, product_categories as pWHERE c.left_node BETWEEN p.left_node AND p.right_nodeAND p.name='电子产品' ORDER BY c.left_node");$stmt-execute();

php无限树状分类查找字段-图3

$rs=$stmt-fetchAll(PDO::FETCH_ASSOC);

foreach($rs as $v){

echo $v['name'].'br /';

输出:

电子产品

家用电器

电视机

电冰箱

空调

数码产品

电脑

台式电脑

笔记本电脑

平板电脑

$stmt = $pdo-prepare("SELECT c.name FROM product_categories as c, product_categories as pWHERE c.left_node BETWEEN p.left_node AND p.right_nodeAND p.name='数码产品' ORDER BY c.left_node");$stmt-execute();

$stmt = $pdo-prepare("SELECT name FROM product_categories where right_node-left_node=1");$stmt-execute();

输出:

$stmt = $pdo-prepare("SELECT p.name FROM product_categories AS c, product_categories AS p WHERE c.left_node BETWEEN p.left_node AND p.right_node AND c.name = '平板电脑' ORDER BY p.left_node");$stmt-execute();

$stmt = $pdo-prepare("SELECT c.name, (COUNT(p.name) - 1) AS level FROM product_categories AS c, product_categories AS p WHERE c.left_node BETWEEN p.left_node AND p.right_node GROUP BY c.name ORDER BY c.left_node");$stmt-execute();

var_dump($rs);

echo 'br /';

echo $v['name'].' level:'.$v['level'].'br /';}

电子产品 level:0

家用电器 level:1

$stmt = $pdo-prepare("SELECT c.name, (COUNT(p.name) - 1) AS level FROM product_categories AS c, product_categories AS p WHERE c.left_node BETWEEN p.left_node AND p.right_node and c.name='平板电脑' GROUP BY c.name ORDER BY c.left_node");$stmt-execute();

function addNode($left_node,$new_node){

global $pdo;

$stmt = $pdo-prepare("SELECT right_node FROM product_categories WHERE name = '$left_node'");$stmt-execute();

$rs=$stmt-fetch(PDO::FETCH_ASSOC);

$right_node=$rs['right_node'];

addNode('家用电器','办公用品');

完成之后表结构如下:

function deleteNode($node_name){

$stmt = $pdo-prepare("SELECT left_node,right_node, right_node - left_node + 1 as width FROM product_categories WHERE name ='$node_name'");$stmt-execute();

$left_node=$rs['left_node'];

$width=$rs['width'];

$pdo-exec("DELETE FROM product_categories WHERE left_node BETWEEN $left_node AND $right_node");$pdo-exec("UPDATE product_categories SET right_node = right_node - $width WHERE right_node $right_node");$pdo-exec("UPDATE product_categories SET left_node = left_node - $width WHERE left_node $right_node");}

deleteNode('数码产品');

可以看到用多叉树的方式构建无限分类,查询的时候是非常简便的.但是在插入新的节点和删除节点时就比较麻烦了.

如何用php建立一个树形结构的类? - PHP进阶讨论

以上就是土嘎嘎小编为大家整理的php无限树状分类查找字段相关主题介绍,如果您觉得小编更新的文章只要能对粉丝们有用,就是我们最大的鼓励和动力,不要忘记讲本站分享给您身边的朋友哦!!

版权声明:倡导尊重与保护知识产权。未经许可,任何人不得复制、转载、或以其他方式使用本站《原创》内容,违者将追究其法律责任。本站文章内容,部分图片来源于网络,如有侵权,请联系我们修改或者删除处理。

编辑推荐

热门文章