把无限级分类生成数组

把无限级分类循环出来确实是一件头疼的事情。

比如,我们要循环出一个SELECT,或一个TABLE,要写一大堆判断。

有没好点的办法呢?

我的做法是生成数组,可以重复调用,直接循环数组就行了。

为了方便,我把它写成了类。

class.asp

返回所有分类的数组,并按顺序排列

有4个属性:

复制代码 代码如下:set aa=new classlist 

aa.id="id"//编号的名称 

aa.classname="classname"//分类名称 

aa.pid="pid"//父ID名称 

aa.db_name="class"//表名 

list=aa.arrylist() 

复制代码 代码如下:<% 

class classlist 

private c_id 

private c_db_name 

private c_pid 

private c_classname 

public property let id(str) 

   c_id = str 

end property 

public property let db_name(str) 

   c_db_name = str 

end property 

public property let pid(str) 

   c_pid = str 

end property 

public property let classname(str) 

   c_classname = str 

end property 

dim list() 

dim i,n 

Private Sub Class_Initialize()'初始化变量 

i=0 

n=0 

End Sub 

public function classarry(thisid,pid)'取得下级ID 

if pid>0 then 

sql="select * from "&c_db_name&" where "&c_pid&"="&thisid 

else 

sql="select * from "&c_db_name&" where "&c_id&"="&thisid 

end if 

set rs_c=conn.execute(sql) 

n=n+1 

do while not rs_c.eof 

list(0,i)=rs_c(c_id)'装入数组中 

list(1,i)=rs_c(c_classname) 

list(2,i)=n 

'n=n+1 

i=i+1 

thisid=classarry(rs_c(c_id),1)'这里递归调用,直到最后一个子类 

rs_c.movenext 

loop 

n=n-1 

rs_c.close 

end function 

public function arrylist()'循环出所有根类 

set rs_c=conn.execute("select count("&c_id&") from "&c_db_name) 

lenght=rs_c(0) 

rs_c.close 

redim list(2,lenght)'设置数组 

set rs1=conn.execute("select "&c_id&" from "&c_db_name&" where "&c_pid&"=0") 

do while not rs1.eof 

call classarry(rs1(c_id),0) 

'n=1 

rs1.movenext 

loop 

rs1.close 

arrylist=list 

end function 

end class 

%> 

实例测试:

表CLASS

字段

id:自动编号

classname:名称

pid:父ID

test.asp

复制代码 代码如下:<!--#include file="class.asp"--> 

<% 

Set conn=Server.CreateObject("ADODB.connection") 

Set Rs = Server.CreateObject("ADODB.Recordset") 

StrDSN = "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" 

StrDSN = StrDSN & Server.MapPath("test.mdb") 

conn.Open strDSN 

function ins(num) 

str="" 

for ii=1 to num 

str=str&"|-" 

next 

ins=str 

end function 

set aa=new classlist 

aa.id="id" 

aa.classname="classname" 

aa.pid="pid" 

aa.db_name="class" 

list=aa.arrylist() 

response.write "<table border=1><tr><td>ID</td><td>名称</td>< td>第几类</td></tr>" 

for j=0 to ubound(list,2) 

response.write "<tr><td>"&list(0,j)&"</td><td>"&list(1,j)&"</td><td>"&list(2,j)&"</td></tr>" 

next 

response.write "</table>" 

'response.write list(1,3) 

%> 

<select name=""> 

<% for i=0 to ubound(list,2)%> 

<option value=""><% 

response.write ins(list(2,i)) 

response.write list(1,i)%></option> 

<%next%> 

</select> 循环结果:

www.hubro.net/code/class/test.asp

基本上可以满足一般的需要了!

时间: 2024-08-02 19:32:46

把无限级分类生成数组的相关文章

ASP把无限级分类生成数组

数组 把无限级分类循环出来确实是一件头疼的事情.比如,我们要循环出一个SELECT,或一个TABLE,要写一大堆判断.有没好点的办法呢?我的做法是生成数组,可以重复调用,直接循环数组就行了.为了方便,我把它写成了类. class.asp 返回所有分类的数组,并按顺序排列有4个属性:set aa=new classlistaa.id="id"//编号的名称aa.classname="classname"//分类名称aa.pid="pid"//父ID

把无限级分类生成数组_ASP CLASS类

把无限级分类循环出来确实是一件头疼的事情. 比如,我们要循环出一个SELECT,或一个TABLE,要写一大堆判断. 有没好点的办法呢? 我的做法是生成数组,可以重复调用,直接循环数组就行了. 为了方便,我把它写成了类. class.asp 返回所有分类的数组,并按顺序排列 有4个属性: 复制代码 代码如下: set aa=new classlist  aa.id="id"//编号的名称  aa.classname="classname"//分类名称  aa.pid=

琥珀无限级分类联动菜单AJAX版

ajax|菜单|联动菜单 我做好琥珀无限级分类联动菜单Javascript版后,在蓝色理想和CSDN上发表了一下,梅花雪兄在CSDN上提出了效率不足的问题,我也认识到了这一点,本打算项目完工后再进行完善,但一时技痒,便在网上寻找了一下资料,最后做出了此AJAX版无限级分类联动菜单.因时间匆忙,做得比较粗糙,但已利用AJAX技术,实现无限级联动,待过一段时间再完善此版本.希望能给大家提供一些帮助,有好的建议或bug可在此帖后回复或浏览http://www.51ajax.com/bbs/发帖.运行环

PHP实现递归无限级分类_php技巧

在一些复杂的系统中,要求对信息栏目进行无限级的分类,以增强系统的灵活性.那么PHP是如何实现无限级分类的呢?我们在本文中使用递归算法并结合mysql数据表实现无限级分类. 递归,简单的说就是一段程序代码的重复调用,当把代码写到一个自定义函数中,将参数等变量保存,函数中重复调用函数,直到达到某个条件才跳出,返回相应的数据.Mysql 首先我们准备一张数据表class,记录商品分类信息.表中有三个字段,id:分类编号,主键自增长:title:分类名称:pid:所属上级分类id.class表结构: C

PHP无限级分类菜单实例程序

最近在做一个内容管理的项目,客户硬要来一个多级分类,其实在许多的开源后台都是无限级的分类,比如111cn.net的后台,而这些分类的数据仅仅只保存到了一个数据表里,只是用源代码进行了关联而已. 而这些关联的数据并不复杂,其实一个优秀的后台设计,应该是无限的分类,这样,在进行二次开发时,不用再单独进行编程了,只要是功能一样,后台添加一个分类就可以了,这样就达到了功能共享了. 一个更简单的无限级分类菜单代码,我就把上面的原理简单实现一下,这个程序的关键就在于数据表的设计很有特色,不用递归,依靠个简单

表格展示无限级分类(PHP版)_php实例

TreeTable通过对单元格的行合并和列合并实现了无限层级也能较好的展示层级架构. 1.构建ID/PID/NAME的数组,后期可通过数据库生成的动态数据.Tree算法请点击 复制代码 代码如下: array( * 1 => array('id'=>'1','parentid'=>0,'name'=>'一级栏目一'), * 2 => array('id'=>'2','parentid'=>0,'name'=>'一级栏目二'), * 3 => array

2款PHP无限级分类实例代码_php技巧

本文章总结了两款PHP无限级分类实现程序代码,有需要学习的朋友可参考一下.主要思路:首先看第三行和第四行,父类ID(PARENTID)的值是1,表示属于id=1这个类的子类,而,一,二两行因为是一级分类,没有上级分类,所以父类ID(PARENTID)的值是0,表示初级分类,依次类推便实现了无限级分类.最终的效果是:├一级分类A ├─┴二级分类A ├─┴二级分类B ├一级分类B然后就是程序,这里以PHP作为描述语言,可以很方便的改成其他语言,因为原理相似,就是一个递归而已. <?php $dbho

表格展示无限级分类(PHP版)

表格展示无限级分类(PHP版) TreeTable是一个能把无限分类展现为表格形式的PHP类库插件,分类的层级表示为表格的列,分类的行数表格分类的总数.单元格显示分类名称. TreeTable通过对单元格的行合并和列合并实现了无限层级也能较好的展示层级架构.   1.构建ID/PID/NAME的数组,后期可通过数据库生成的动态数据.Tree算法请点击  代码如下 复制代码 ?array(     *      1 => array('id'=>'1','parentid'=>0,'nam

php 无限级分类,超级简单的无限级分类,支持输出树状图_php技巧

无平台限制 只需要告知id,parentid,name 即可 <?php error_reporting(E_ALL ^ E_NOTICE); class Tree { /** +------------------------------------------------ * 生成树型结构所需要的2维数组 +------------------------------------------------ * @author abc +-----------------------------