<% Loop %> </UL> <% rsCatalog.Close End Function %>
修改后的GetChildren就可以完成显示FID分类的所有子分类的任务。要显示所有的分类,只需要如此调用就可以了:
<% REM strConn--连接数据库的字符串,请根据情况修改 set oConn = Server.CreateObject("ADODB.Connection") oConn.Open strConn =GetChildren(oConn,-1) oConn.Close %>
如何查找某个分类的所有产品;
现在来解决我们在前面提出的第四个问题。我们假设产品的数据表如下定义:
Create Table Product( [ID] [int] NOT NULL, [Name] [nvchar] NOT NULL, [FatherID] [int] NOT NULL );
其中,ID是产品的编号,Name是产品的名称,而FatherID是产品所属的分类。 对第四个问题,很容易想到的办法是:先找到这个分类FID的所有子类,然后查询所有子类下的所有产品。实现这个算法实际上很复杂。代码大致如下:
<% Function GetAllID(oConn,FID) Dim strTemp If FID=-1 then strTemp = "" else strTemp ="," end if strSQL = "select Name from catalog where FatherID="&FID set rsCatalog = oConn.Execute(strSQL) Do while not rsCatalog.Eof strTemp=strTemp&rsCatalog("ID")&GetAllID(oConn,Catalog("ID")) REM 递归调用 Loop rsCatalog.Close GetAllID = strTemp End Function REM strConn--连接数据库的字符串,请根据情况修改 set oConn = Server.CreateObject("ADODB.Connection") oConn.Open strConn FID = Request.QueryString("FID") 分页: [1] [2] [3] [4] [5] [6] [7] [8] [9] (编辑:网站学习网)
|