<?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(' ', $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(' ',$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');