无限极分类

<?php
//无限极分类demo
header("Content-type:text/html;charset=utf-8");
$dir = dirname(__FILE__);

$dbh = new PDO('mysql:host=localhost;dbname=localhost_test', 'root', '');
$dbh->query('set names utf8;');

/****父id数据****/

/**
 * 处理下拉样式数据
 * @param $dbh 数据资源句柄
 * @param int $pid 分类id
 * @param array $result 返回数组
 * @param int $spac  空白
 * @return array
 */
function getCateList($dbh, $pid = 0, &$result = [], $spac = 0)
{
    $stmt = $dbh->query('SELECT * from un_limit_cate WHERE pid = ' . $pid);
    $res = $stmt->fetchAll(PDO::FETCH_ASSOC);
    $spac += 2;

    foreach ($res as $k => $v) {
        $v['catename'] = str_repeat('&nbsp;&nbsp;', $spac) . '|--' . $v['catename'];
        $result[] = $v;
        getCateList($dbh, $v['id'], $result, $spac);
    }
    return $result;
}

/**
 * 显示下拉样式
 * @param $dbh 数据资源句柄
 * @param int $pid 分类id
 * @return string
 */
function disPlayCateDrop($dbh,$pid =0){
    $rs = getCateList($dbh,$pid);
    $str ="<select name =''>";
    foreach ($rs as $key =>$val){
        $str .="<option>".$val['catename']."</option>";
    }
    $str.='</select>';
    return $str;
}
//print_r(disPlayCateDrop($dbh,0));die;



/**
 * 处理link样式数据
 * @param $dbh 数据资源句柄
 * @param $cid 分类id
 * @param array $result 返回数组
 * @return array
 */
function getCateListLink($dbh, $cid, &$result = []){
    $stmt = $dbh->query('SELECT * from un_limit_cate WHERE id = ' . $cid);
    $res = $stmt->fetchAll(PDO::FETCH_ASSOC);
    if(!empty($res[0])){
        $result[] = $res[0];
        getCateListLink($dbh,$res[0]['pid'],$result);
    }
    krsort($result);
    return $result;
}

/**
 * 显示link样式
 * @param $dbh  数据资源句柄
 * @param $cid  分类id
 */
function disPlayLink($dbh,$cid){
    $res = getCateListLink($dbh,$cid);
    foreach ($res as $re) {
        echo "><a href='id={$re['id']}'>{$re['catename']}</a>";
    }
}
//print_r(disPlayLink($dbh,10));die;




/****全路径数据****/

/**
 * 全路径数据下拉数据
 * @param $dbh
 * @return array
 */
function getfullPathLists($dbh){
    $stmt = $dbh->query("SELECT id,catename,path,concat(path,',',id) as fullpath from un_limit_cate2 order by fullpath asc ");
    $res = $stmt->fetchAll(PDO::FETCH_ASSOC);
    $result = [];
    foreach ($res as $k =>$v){
        $deep = count(explode(',',trim($v['fullpath'],',')));
        $v['catename'] = str_repeat('&nbsp;&nbsp;',$deep*2).'|--'.$v['catename'];
        $result[] = $v;
    }
    return $result;
}

/**
 * 全路径数据下拉数据显示
 * @param $dbh
 * @return string
 */
function disPlayfullPathDrop($dbh){
    $rs = getfullPathLists($dbh);
    $str ="<select name =''>";
    foreach ($rs as $key =>$val){
        $str .="<option>".$val['catename']."</option>";
    }
    $str.='</select>';
    return $str;
}

//print_r(disPlayfullPathDrop($dbh));



/**全路径数据link**/

/**
 * 全路径数据link数据处理
 * @param $dbh
 * @param $cid
 * @return mixed
 */
function getfullPathLinks($dbh,$cid){
    $stmt = $dbh->query("SELECT id,catename,path,concat(path,',',id) as fullpath from un_limit_cate2 WHERE id =".$cid);
    $res = $stmt->fetchAll(PDO::FETCH_ASSOC);
    $ids = $res[0]['fullpath'];

    $stmt = $dbh->query("SELECT * from un_limit_cate2 WHERE id in ($ids) ORDER by id asc");
    $res = $stmt->fetchAll(PDO::FETCH_ASSOC);
    return $res;
}

/**
 * 显示link样式
 * @param $dbh  数据资源句柄
 * @param $cid  分类id
 */
function disPlayfullPathLink($dbh,$cid){
    $res = getfullPathLinks($dbh,$cid);
    foreach ($res as $re) {
        echo "><a href='id={$re['id']}'>{$re['catename']}</a>";
    }
}
print_r(disPlayfullPathLink($dbh,4));

附带对应的两个表

DROP TABLE IF EXISTS `un_limit_cate`;
CREATE TABLE `un_limit_cate` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `pid` int(11) NOT NULL COMMENT '父id',
  `catename` varchar(30) NOT NULL COMMENT '分类名',
  `cateorder` int(11) NOT NULL DEFAULT '0' COMMENT '排序',
  `createtime` int(11) NOT NULL DEFAULT '0' COMMENT '创建时间',
  PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=11 DEFAULT CHARSET=utf8mb4;

-- ----------------------------
-- Records of un_limit_cate
-- ----------------------------
INSERT INTO `un_limit_cate` VALUES ('1', '0', '新闻', '0', '0');
INSERT INTO `un_limit_cate` VALUES ('2', '0', '图片', '0', '0');
INSERT INTO `un_limit_cate` VALUES ('3', '1', '国内新闻', '0', '0');
INSERT INTO `un_limit_cate` VALUES ('4', '1', '国际新闻', '0', '0');
INSERT INTO `un_limit_cate` VALUES ('5', '3', '北京新闻', '0', '0');
INSERT INTO `un_limit_cate` VALUES ('6', '3', '上海新闻', '0', '0');
INSERT INTO `un_limit_cate` VALUES ('7', '4', '美国新闻', '0', '0');
INSERT INTO `un_limit_cate` VALUES ('8', '2', '美女图片', '0', '0');
INSERT INTO `un_limit_cate` VALUES ('9', '2', '风景图片', '0', '0');
INSERT INTO `un_limit_cate` VALUES ('10', '8', '日韩明星', '0', '0');

 

DROP TABLE IF EXISTS `un_limit_cate2`;
CREATE TABLE `un_limit_cate2` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `catename` varchar(255) NOT NULL COMMENT '分类名称',
  `path` varchar(255) DEFAULT NULL COMMENT '路径',
  `cateorder` varchar(255) NOT NULL DEFAULT '0' COMMENT '排序',
  `createtime` int(11) NOT NULL DEFAULT '0' COMMENT '创建时间',
  PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=11 DEFAULT CHARSET=utf8mb4;

-- ----------------------------
-- Records of un_limit_cate2
-- ----------------------------
INSERT INTO `un_limit_cate2` VALUES ('1', '手机', null, '0', '0');
INSERT INTO `un_limit_cate2` VALUES ('2', '功能手机', '1', '0', '0');
INSERT INTO `un_limit_cate2` VALUES ('3', '老人手机', '1,2', '0', '0');
INSERT INTO `un_limit_cate2` VALUES ('4', '儿童手机', '1,2', '0', '0');
INSERT INTO `un_limit_cate2` VALUES ('5', '智能手机', '1', '0', '0');
INSERT INTO `un_limit_cate2` VALUES ('6', '安卓手机', '1,5', '0', '0');
INSERT INTO `un_limit_cate2` VALUES ('7', 'ios手机', '1,5', '0', '0');
INSERT INTO `un_limit_cate2` VALUES ('8', 'win手机', '1,5', '0', '0');
INSERT INTO `un_limit_cate2` VALUES ('9', '色盲手机', '1,2,4', '0', '0');
INSERT INTO `un_limit_cate2` VALUES ('10', '大字手机', '1,2,3', '0', '0');

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值