amp;;parentID&;",')>0"
复制内容到剪贴板
代码: 代码:
(MS
SQL)sql="delete
from
T_Product
where
CHARINDEX(',"&;parentID&;",',sortPath)>0" <5>范例代码见图 6。MS SQL 的代码就不贴了。 [center] 图六
[/center] [4]移动节点 难点哦,睁大眼睛仔细看。 <1>选择要移动的节点 parentID,选择目的节点 toParentID(也就是把当前 节点放到谁的下面)。 <2>如果 parentID=0 报错,根节点不能移动。 <3>如果 toParentID=parentID,这是要把自己放到自己下面,报错。 <4>根据 parentID,取得它的 sortPath,我们叫它 fromPath。 <5>如果 toParentID=0,那么 toPath="0,",如果 toParentID<>0,取得它的 sortPath,叫它 toPath。 <6>如果 toParentID 等于要移动节点的父节点,不需要移动,报错。判断方 法是看 toPath &; parentID &;","是否等于 fromPath。 <7>如果 toParentID 是要移动节点的子节点,不能移动,报错。判断方法是 看 Instr(toPath,fromPath)是否大于 0。 <8>组合要移动节点的新 sortPath, 也就是 newPath=toPath &; parentID &;","。 <9>更新要移动节点及其所有子节点的 sortPath()。如"0,2,3,5,"移动到 "0,1,"下,那么新的 sortPath 就是"0,1,5,"了(想想,对吧)。而"0,2,3,5,"的所有子节点的左半 部分都是"0,2,3,5,",那么只要把"0,2,3,5,"替换成"0,1,5,"就行了。
复制内容到剪贴板
代码: 代码:
(Access)sql="update
T_Sort
set where
sortPath='"&;newPath&;"'+Mid(sortPath,Len('"&;fromPath&;"')+1) Instr(sortPath,'"&;fromPath&;"')>0"
复制内容到剪贴板
代码: 代码:
(MS
SQL)
sql="update
T_Sort
set where
sortPath=replace(sortPath,'"&;fromPath&;"','"&;newPath&;"') CHARINDEX[('"&;fromPath&;"',sortPath)>0" 因为 Access 好像没有内置 repalce 函数,所以麻烦了一些
。 <10>更新要移动节点的 parentID。直接 update 就行啦。
<11>商品是跟随分类走的,所以商品的 parentID 不用更新,只要更新它的 sortPath 就行了。语句同<9>,只是表名换成 T_Product。 <12>范例代码见图 7。MS SQL 的代码只有上面 2 个 SQL 语句不同,不贴了。 [center] 图七
[/center] [5]前台分类浏览商品 前台一般都不会把所有类别一下子都列出来,都是分级浏览的,一层一层的 看。我们要做的只是浏览一个分类时,把它的下级分类列出来。 <1>取直接子类别,很简单啦。
复制内容到剪贴板
代码: 代码:
sql="select sortID,sortName from T_Sort where parentID="&;sortID 就行啦。 <2>一般我们都会显示一个当前位置,就是分类所在的路径,怎么办呢?难道 去递归查询吗?当然不,我这里用了一个小技巧。 浏览某一个分类的时候,我们会有一个 sortID,可以根据它从 T_Sort 取得 sortPath....不说了,大家看示范代码吧,不懂问我。 范例代码见图 8。 [center] 图八
[/center] 显示的时候用
复制内容到剪贴板
代码: 代码:
<%for i=1 to UBound(myArray) response.write "-&;gt;
href='product.asp?sortID="&;myArray(i)&;"'>"&;getValueByID(myArray(i),nameA rray)&;"" next%> 就 OK 了。getValueByID 是我写的一个 Function,见后。 <3>显示该类别及其所有子类别下的所有商品。
复制内容到剪贴板
代码: 代码:
sql="select * from T_Product where Instr(sortPath,',"&;sortID&;",')>0" 如果只显示该类别下的商品,那么就用 parentID 判断就行了。 [6]前台检索商品 如果你的检索表单不包含商品类别,那么没有什么特殊的。如果有商品类别 的话,也很简单,SQL 的 where 条件里加一个
复制内容到剪贴板
代码: 代码:
"and Instr(sortPath,',"&;sortID&;",')>0" 就行了。 [7]后台商品添加、修改 添加是要选择所在的分类, 这样就可以得到 sortID, 并能取