PHP无限极分类大屏查看

发布于:2015年07月20日 已被阅读

PHP无限级分类实现。。。。。。

1,数据库设计:

2,代码:

?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
/**
 * @author koma
 * @todo   PHP无限极分类
 */
$cn = mysql_connect('localhost''root'''or die(mysql_error());
mysql_select_db('t'$cnor die(mysql_error());
mysql_query('set names utf8');
 
/**
 * 从顶层逐级向下获取子类
 * @param number $pid
 * @param array $lists
 * @param number $deep
 * @return array
 */
function getLists($pid = 0, &$lists array(), $deep = 1) {
    $sql 'SELECT * FROM category WHERE pid='.$pid;
    $res = mysql_query($sql);
    while ( ($row = mysql_fetch_assoc($res)) !== FALSE ) {
        $row['catename'] = str_repeat('   '$deep).'|---'.$row['catename'];
        $lists[] = $row;
        getLists($row['id'], $lists, ++$deep); //进入子类之前深度+1
        --$deep//从子类退出之后深度-1
    }
    return $lists;
}
 
function displayLists($pid = 0, $selectid = 1) {
    $result = getLists($pid);
    $str '<select>';
    foreach $result as $item ) {
        $selected "";
        if $selectid == $item['id'] ) {
            $selected 'selected';
        }
        $str .= '<option '.$selected.'>'.$item['catename'].'</option>';
    }
    return $str .= '</select>';
}
/**
 * 从子类开始逐级向上获取其父类
 * @param number $cid
 * @param array $category
 * @return array:
 */
function getCategory($cid, &$category array()) {
    $sql 'SELECT * FROM category WHERE id='.$cid.' LIMIT 1';
    $result = mysql_query($sql);
    $row = mysql_fetch_assoc($result);
    if $row ) {
        $category[] = $row;
        getCategory($row['pid'], $category);
    }
    krsort($category); //逆序,达到从父类到子类的效果
    return $category;
}
 
function displayCategory($cid) {
    $result = getCategory($cid);
    $str "";
    foreach $result as $item ) {
        $str .= '<a href="'.$item['id'].'">'.$item['catename'].'</a>>';
    }
    return substr($str, 0, strlen($str) - 1);
}
 
echo displayLists(0, 3);
 
echo displayCategory(13);

3,效果图:


最新发布
linux下svn提交忽略某些文件... (173)
使用批处理来批量更新、提交SVN... (136)
linux查看目录文件大小命令 (146)
linux tar打包压缩排除某个... (134)
Linux tar压缩和解压 (192)
SVN子命令add用法浅析 (130)
热门博文
网友FBI探案:马蓉iPad惊人发现... (43345)
霍金携手俄罗斯富豪耗资1亿美元寻找外... (4747)
如何才能查看PHP内置函数源代码... (1210)
微信支付开发当前URL未注册的解决方... (575)
《谁为爱情买单》中的经典面试 ... (441)
让虚拟主机也用上SVN:适用于个人的... (395)
精华博文
[推荐]Centos7 安装配置 SVN (159)
easyswoole框架安装 (174)
php开启pecl的支持(推荐) (157)
1-10个恋爱表现:男朋友爱你程度到... (164)
女生喜欢你的10个程度,到第六个就可... (141)
Eclipse 没有Server选项... (211)
友情链接
我来忙 (110)