喜悦国际村 
» 游客:  注册 | 登录 | 搜索 | 统计 | 喜悦证交所 | 帮助

RSS 订阅当前论坛  

[北京]代朋友公司招聘PHP高级程序员多名

上一主题 下一主题
 21  1/3  1  2  3  > 
     
标题: [原创] 无限分类只要读一次数据库(附代码)  
  本主题由 c1a1o1 于 2007-11-17 11:05 AM 加入精华 
 
柳甲
中级会员
Rank: 3Rank: 3
中级会员



UID 23541
精华 1
积分 288
帖子 260
金钱 278 喜悦币
威望 10
人脉 0
阅读权限 30
注册 2003-9-28
状态 离线
无限分类只要读一次数据库(附代码)

好久没来了,昨天看到一位朋友的帖子说无限分类很简单,看完后多说了点,事后也觉得不太应该,
大家爱学,我就把我们一个商业程序中的无限分类拿出来,可能有不尽意的地方,同时也希望村民能给意见或建议
下面是无限分类的数据表


 附件: 您所在的用户组无法下载或查看附件



未名工作室http://www.qqwm.com
网站后台开发,PERL,PHP,JSP
2007-11-16 08:39 PM#1
查看资料  访问主页  Blog  发短消息  QQ  顶部
 
柳甲
中级会员
Rank: 3Rank: 3
中级会员



UID 23541
精华 1
积分 288
帖子 260
金钱 278 喜悦币
威望 10
人脉 0
阅读权限 30
注册 2003-9-28
状态 离线
[推荐阅读] 上海创业团队招聘php网站开发人员两名
这样显示会好看清一些

 附件: 您所在的用户组无法下载或查看附件



未名工作室http://www.qqwm.com
网站后台开发,PERL,PHP,JSP
2007-11-16 08:43 PM#2
查看资料  访问主页  Blog  发短消息  QQ  顶部
 
柳甲
中级会员
Rank: 3Rank: 3
中级会员



UID 23541
精华 1
积分 288
帖子 260
金钱 278 喜悦币
威望 10
人脉 0
阅读权限 30
注册 2003-9-28
状态 离线
[推荐阅读] 找工作中。。。。。。。。。
上面这张图上显示的2次查询,取出显示分类也只是用了1次
下面我把在选择框里显示的代码COPY发出来
因为是全COPY的,我们在实际运用中还有缓存,所以函数一开始是读缓存,缓存不存在时才读数据库(这样的好处是在实际应用中显示一个无限分类可以不用读数据库)
函数输出是一个完全处理好了的数组,在smarty中只要显示该数组就完全可以了。

<?php
/**
    * 未名新闻专用函数
    * @ return array
    * (c) [url]www.wmstudio.cn[/url]
    */
    
function get_cat_options()
    {
        global 
$news_categories;

        
$cat_array = array();

        
$cat_array['thread'] = array();

        if (empty(
$news_categories)) // 如果之前的程序中取出了类别,就不再读缓存
        
{
            @include( 
C_PATH_CACHE 'categories' PHPEX ); // 调入缓存的类别数组$news_categories
        
}

        if (empty(
$news_categories)) // 如果缓存不存在,读数据库取出
        
{
            unset(
$sql);

            
$sql 'SELECT *'
                 
' FROM ' TABLE_ART_CATEGORIES 
                 
' ORDER BY cat_grouporder ASC, cat_group ASC, cat_order ASC';

            if ( 
FALSE !== $result db_query$sql ) )
            {
                while ( 
$catrow db_fetch_array($result) )
                {
                    
$cat_array['thread'][$catrow['cat_parentid']]++;

                    
$cat_array['catrows'][] = $catrow;
                }

                
$cat_array_count db_num_rows($result);
            }
            else
            {
                return (boolean) 
FALSE;
            }
        }
        else
        {
            foreach (
$news_categories as $catrow)
            {
                
$cat_array['thread'][$catrow['cat_parentid']]++;

                
$cat_array['catrows'][] = $catrow;
            }

            
$cat_array_count count($news_categories);
        }

        

        
$p_catoptions = array();

        unset(
$catrow);

        for (
$i 0$i $cat_array_count$i++)
        {
            
$icon '';

            
$space '';

            
$catrow '';

            
$catrow $cat_array['catrows'][$i];

            
$cat_tree[$catrow['cat_level'] + 1] = $cat_array['thread'][$catrow['cat_id']];

            
$cat_tree[$catrow['cat_level']]--;

            for (
$ii 0$ii $catrow['cat_level']; $ii++)
            {
                if (
$cat_tree[$ii] > 0)
                {
                    
$space .= '&#9475;';
                }
                else
                {
                    
$space .= '&nbsp;&nbsp;';
                }
            }

            if (
$cat_tree[$catrow['cat_level']] > 0)
            {
                
$space .= '&#9507;';
            }
            elseif (
$cat_tree[$catrow['cat_level']] == && $catrow['cat_parentid'] != 0)
            {
                
$space .= '&#9495;';
            }

            
//$space = str_repeat('---', $catrow['cat_level']);
        
            
$p_catoptions[$catrow['cat_id']] = $space $catrow['cat_name'];

            
// $t_assign['catname'][$catrow['cat_id']] = $space . $catrow['cat_name'];
        
}

        return 
$p_catoptions;
    }
?>




未名工作室http://www.qqwm.com
网站后台开发,PERL,PHP,JSP
2007-11-16 08:58 PM#3
查看资料  访问主页  Blog  发短消息  QQ  顶部
 
c1a1o1
版主
Rank: 7Rank: 7Rank: 7
一品带刀护卫


UID 68669
精华 0
积分 1232
帖子 2149
金钱 1232 喜悦币
威望 0
人脉 0
阅读权限 100
注册 2006-2-17
状态 离线
[推荐阅读] 新家
好久没有见到这样的帖子了!



流量交换联盟
php教材价格比较网言情小说
2007-11-17 11:05 AM#4
查看资料  Blog  发短消息  QQ  顶部
 
xiejin8877
高级会员
Rank: 4


UID 74751
精华 0
积分 567
帖子 887
金钱 567 喜悦币
威望 0
人脉 0
阅读权限 50
注册 2006-6-9
来自 上海
状态 离线
[推荐阅读] 同样的密码,为什么MD5加密后不一样
收下...........



集结号 我觉的比投名状好看
2007-11-17 12:07 PM#5
查看资料  发短消息  QQ  顶部
 
永远是新手
高级会员
Rank: 4



UID 80833
精华 0
积分 682
帖子 509
金钱 682 喜悦币
威望 0
人脉 0
阅读权限 50
注册 2006-10-1
状态 离线
[推荐阅读] 测试字符长度?
收了,谢.
2007-11-17 01:00 PM#6
查看资料  Blog  发短消息  顶部
 
psdshow
金牌会员
Rank: 6Rank: 6
论坛元老



UID 30908
精华 0
积分 1758
帖子 1364
金钱 1758 喜悦币
威望 0
人脉 0
阅读权限 70
注册 2004-9-6
来自 永州-廣州
状态 离线
[推荐阅读] 关于本论坛会员请教问题的事情
顶了先说

组号是么子意思?




以下AD由PHPX赞助:
广州梦莎五金饰品厂 东莞恒隆五金饰品厂 承接php私活
2007-11-17 01:06 PM#7
查看资料  访问主页  Blog  发短消息  QQ  顶部
 
柳甲
中级会员
Rank: 3Rank: 3
中级会员



UID 23541
精华 1
积分 288
帖子 260
金钱 278 喜悦币
威望 10
人脉 0
阅读权限 30
注册 2003-9-28
状态 离线
[推荐阅读] 我是新来的 什么也不懂 那位师傅 能带我一下
组号其实就是顶级类别的ID,说白一点就是“祖宗”,一个祖宗有很多子子孙孙,但是这些子子孙孙是同一个祖宗的。从我上面的图片例子来说,“新闻”是一个组,“文学”是一个组;

组与组之间排序就很容易理解了;

因为有组与组之间排序,所以取出数据时只要
ORDER BY cat_grouporder ASC, cat_group ASC, cat_order ASC';
就行了

用楼顶的数据表你可以自己写一个读取代码试试




未名工作室http://www.qqwm.com
网站后台开发,PERL,PHP,JSP
2007-11-17 08:06 PM#8
查看资料  访问主页  Blog  发短消息  QQ  顶部
 
yulei568
新手上路
Rank: 1



UID 91007
精华 0
积分 16
帖子 14
金钱 16 喜悦币
威望 0
人脉 0
阅读权限 10
注册 2007-4-10
状态 离线
[推荐阅读] 弱问:分类陈列问题!
感谢LZ分享!
2007-11-17 08:47 PM#9
查看资料  发短消息  顶部
 
游戏人间
版主
Rank: 7Rank: 7Rank: 7
风云山庄大少爷


UID 62639
精华 2
积分 14383
帖子 7272
金钱 14241 喜悦币
威望 20
人脉 122
阅读权限 100
注册 2004-12-21
来自 广西人在北京
状态 离线
[推荐阅读] 程序员的普遍“兔子”现状
留一脚

但是:如果分类就几百个,就算是只读一次花的时间也不小。




 
群号:6025396/6025252/19520091(广西PHP交流/PHP高级编程/算法交流)、饿踢Blog

寧可在嘗試中失敗,也不在保守中成功!

不為失敗找理由,只為成功找方法!
 
2007-11-18 04:44 AM#10
查看资料  访问主页  Blog  发短消息  顶部
 21  1/3  1  2  3  > 
     


  可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题 | 开通个人空间  


 




Powered by Discuz! 6.1.0  © 2001-2010 Comsenz Inc.
Processed in 0.037680 second(s), 7 queries

(冀ICP备05009913号) 管理员:sadly 邮箱/MSN: sadly@phpx.com QQ:824008(长隐) 清除 Cookies - - Archiver - WAP