三级分类不递归是怎样实现的呢 (附测试代码) 求解 本帖最后由 anydy2008 于 2013-01-06 12:07:44 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 参考左右值算法,你可以去google一下。 ShadowSniper 好的 我再等等看,你说的算法一下子不是狠好看懂。有个实例应该会上手快一点的 参考代码 http://bbs.csdn.net/topics/370094009 其实左右值算法不难理解的。分类,肯定是个树状结构。我们把每一个节点,都设置一个左值和一个右值 (1)root(14) / \ (2)a (7) (8)b(13) / \ / \ (3)c(4) (5)d(6) (9)e(10) (11) f(12) 当你要获取节点a的子节点时,只需要判断>a的左值<a的右值.就可以得到他的子节点了。而不需要遍历整棵树。那么你在db里面存储时,就按照这个结构来存。并且把left_value和right_value都建立索引。my_categorys:---------------id name left_value right_value1 root 1 142 a 2 7 3 b 8 134 c 3 4...sql查a节点的所有子节点:select * from my_categorys where left_value > 2 and right_value < 7。就得到了(3)c(4)和(5)d(6)。 其实你可以参考CSDN旧版的做法,用ajax来实现,这样邮寄点好处1.不必每次都载入所有的分类,因为不是每个人都对每一个节点下的内容感兴趣,既然不会打开就不要载入,节约资源2.不管你用不用递归,其实你都要一次性把所有的资源装入内存,我认为不妥,且有点浪费因此建议你用ajax配合json来实现,做法简单,而且节约资源. 版主 我用了你的测试代码。但觉得不是我想要的那种格式,我想要的就像360buy京东左侧类别导航。<div class="subitem" clstag="homepage|keycount|home2012|0601b"> <dl class="fore1"> <dt> <a href="http://e.360buy.com/">电子书刊</a> </dt> <dd><em><a href="http://e.360buy.com/ebook.html">电子书</a></em><em><a href="http://e.360buy.com/network.html">网络原创</a></em><em><a href="http://e.360buy.com/magazine.html">数字杂志</a></em><em><a href="http://e.360buy.com/media.html">多媒体图书</a></em></dd> </dl> <dl class="fore2"> <dt> <a href="http://music.360buy.com/">数字音乐</a> </dt> <dd><em><a href="http://music.360buy.com/category_1.html">通俗流行</a></em><em><a href="http://music.360buy.com/category_2.html">古典音乐</a></em><em><a href="http://music.360buy.com/category_3.html">摇滚说唱</a></em><em><a href="http://music.360buy.com/category_4.html">爵士蓝调</a></em><em><a href="http://music.360buy.com/category_5.html">乡村民谣</a></em><em><a href="http://music.360buy.com/category_8.html">有声读物</a></em></dd> </dl> <dl class="fore3"> <dt> <a href="http://mvd.360buy.com/">音像</a> </dt> <dd><em><a href="http://mvd.360buy.com/music.html">音乐</a></em><em><a href="http://mvd.360buy.com/movie.html">影视</a></em><em><a href="http://mvd.360buy.com/education.html">教育音像</a></em><em><a href="http://mvd.360buy.com/theme/4053-7.html">游戏</a></em></dd> </dl> <dl class="fore4"> <dt> 文艺 </dt> <dd><em><a href="http://www.360buy.com/products/1713-3258-000.html">小说</a></em><em><a href="http://www.360buy.com/products/1713-3259-000.html">文学</a></em><em><a href="http://www.360buy.com/products/1713-3260-000.html">青春文学</a></em><em><a href="http://www.360buy.com/products/1713-3261-000.html">传记</a></em><em><a href="http://www.360buy.com/products/1713-3262-000.html">艺术</a></em></dd> </dl> <dl class="fore5"> <dt> 人文社科 </dt> <dd><em><a href="http://www.360buy.com/products/1713-3273-000.html">历史</a></em><em><a href="http://www.360buy.com/products/1713-3279-000.html">心理学</a></em><em><a href="http://www.360buy.com/products/1713-3276-000.html">政治/军事</a></em><em><a href="http://www.360buy.com/products/1713-3275-000.html">国学/古籍</a></em><em><a href="http://www.360buy.com/products/1713-3274-000.html">哲学/宗教</a></em><em><a href="http://www.360buy.com/products/1713-3281-000.html">社会科学</a></em></dd> </dl> <dl class="fore6"> <dt> 经管励志 </dt> <dd><em><a href="http://www.360buy.com/products/1713-3264-000.html">经济</a></em><em><a href="http://www.360buy.com/products/1713-3265-000.html">金融与投资</a></em><em><a href="http://www.360buy.com/products/1713-3266-000.html">管理</a></em><em><a href="http://www.360buy.com/products/1713-3267-000.html">励志与成功</a></em></dd> </dl> <dl class="fore7"> <dt> 生活 </dt> <dd><em><a href="http://www.360buy.com/products/1713-3270-000.html">家庭与育儿</a></em><em><a href="http://www.360buy.com/products/1713-3271-000.html">旅游/地图</a></em><em><a href="http://www.360buy.com/products/1713-9278-000.html">烹饪/美食</a></em><em><a href="http://www.360buy.com/products/1713-9291-000.html">时尚/美妆</a></em><em><a href="http://www.360buy.com/products/1713-9301-000.html">家居</a></em><em><a href="http://www.360buy.com/products/1713-9309-000.html">婚恋与两性</a></em><em><a href="http://www.360buy.com/products/1713-9314-000.html">娱乐/休闲</a></em><em><a href="http://www.360buy.com/products/1713-3269-000.html">健身与保健</a></em><em><a href="http://www.360buy.com/products/1713-3272-000.html">动漫/幽默</a></em><em><a href="http://www.360buy.com/products/1713-3288-000.html">体育/运动</a></em></dd> </dl> <dl class="fore8"> <dt> 科技 </dt> <dd><em><a href="http://www.360buy.com/products/1713-9340-000.html">科普</a></em><em><a href="http://www.360buy.com/products/1713-3287-000.html">IT</a></em><em><a href="http://www.360buy.com/products/1713-3284-000.html">建筑</a></em><em><a href="http://www.360buy.com/products/1713-3285-000.html">医学</a></em><em><a href="http://www.360buy.com/products/1713-3282-000.html">工业技术</a></em><em><a href="http://www.360buy.com/products/1713-9351-000.html">电子/通信</a></em><em><a href="http://www.360buy.com/products/1713-9368-000.html">农林</a></em><em><a href="http://www.360buy.com/products/1713-3286-000.html">科学与自然</a></em></dd> </dl> <dl class="fore9"> <dt> 少儿 </dt> <dd><em><a href="http://www.360buy.com/products/1713-3263-000.html">少儿</a></em><em><a href="http://www.360buy.com/children/3402.html">0-2岁</a></em><em><a href="http://www.360buy.com/children/3403.html">3-6岁</a></em><em><a href="http://www.360buy.com/children/3404.html">7-10岁</a></em><em><a href="http://www.360buy.com/children/3405.html">11-14岁</a></em></dd> </dl> <dl class="fore10"> <dt> 教育 </dt> <dd><em><a href="http://www.360buy.com/products/1713-3289-000.html">教材教辅</a></em><em><a href="http://www.360buy.com/products/1713-3290-000.html">考试</a></em><em><a href="http://www.360buy.com/products/1713-3291-000.html">外语学习</a></em></dd> </dl> <dl class="fore11"> <dt> 其它 </dt> <dd><em><a href="http://www.360buy.com/products/1713-4855-000.html">英文原版书</a></em><em><a href="http://www.360buy.com/products/1713-6929-000.html">港台图书</a></em><em><a href="http://www.360buy.com/products/1713-3294-000.html">工具书</a></em><em><a href="http://www.360buy.com/products/1713-3296-000.html">套装书</a></em><em><a href="http://www.360buy.com/products/1713-4758-000.html">杂志/期刊</a></em></dd> </dl> </div>循环大类(dt),然后当中再循环小类(dd)的一个四维数组。请求写一个给我研究一下,就和我递归输出的那个结果一样;谢谢了! 代码没格式好 再发一下。<div class="subitem" clstag="homepage|keycount|home2012|0601b"> <dl class="fore1"> <dt> <a href="http://e.360buy.com/"> 电子书刊 </a> </dt> <dd> <em> <a href="http://e.360buy.com/ebook.html"> 电子书 </a> </em> <em> <a href="http://e.360buy.com/network.html"> 网络原创 </a> </em> <em> <a href="http://e.360buy.com/magazine.html"> 数字杂志 </a> </em> <em> <a href="http://e.360buy.com/media.html"> 多媒体图书 </a> </em> </dd> </dl> <dl class="fore2"> <dt> <a href="http://music.360buy.com/"> 数字音乐 </a> </dt> <dd> <em> <a href="http://music.360buy.com/category_1.html"> 通俗流行 </a> </em> <em> <a href="http://music.360buy.com/category_2.html"> 古典音乐 </a> </em> <em> <a href="http://music.360buy.com/category_3.html"> 摇滚说唱 </a> </em> <em> <a href="http://music.360buy.com/category_4.html"> 爵士蓝调 </a> </em> <em> <a href="http://music.360buy.com/category_5.html"> 乡村民谣 </a> </em> <em> <a href="http://music.360buy.com/category_8.html"> 有声读物 </a> </em> </dd> </dl> <dl class="fore3"> <dt> <a href="http://mvd.360buy.com/"> 音像 </a> </dt> <dd> <em> <a href="http://mvd.360buy.com/music.html"> 音乐 </a> </em> <em> <a href="http://mvd.360buy.com/movie.html"> 影视 </a> </em> <em> <a href="http://mvd.360buy.com/education.html"> 教育音像 </a> </em> <em> <a href="http://mvd.360buy.com/theme/4053-7.html"> 游戏 </a> </em> </dd> </dl></div> ShadowSniper 谢谢你的建议 我会找时间探索一下的 用phpmyadmin 导入CSV文件 中文是乱码 mysql数据的字符集 请教关于appserv的安装问题 (急!!) 一个比较2的问题,求大侠解决 fgetcsv函数上传文件 写入数据时存在的问题 mysql phpMyAdmin - 2.9.0.2 编码问题请教 PHP从数据库中提取出来的数据如何写入在线编辑器问题? PHP的横向重复区域代码,是怎么写的 用PHP写Sendmail程序问题 使用ueditor在php里的post接受不到值 求助,Xdebug的配置,缓存问题。
我再等等看,你说的算法一下子不是狠好看懂。有个实例应该会上手快一点的
分类,肯定是个树状结构。我们把每一个节点,都设置一个左值和一个右值 (1)root(14)
/ \
(2)a (7) (8)b(13)
/ \ / \
(3)c(4) (5)d(6) (9)e(10) (11) f(12) 当你要获取节点a的子节点时,只需要判断>a的左值<a的右值.就可以得到他的子节点了。而不需要遍历整棵树。那么你在db里面存储时,就按照这个结构来存。并且把left_value和right_value都建立索引。
my_categorys:
---------------
id name left_value right_value
1 root 1 14
2 a 2 7
3 b 8 13
4 c 3 4
...sql查a节点的所有子节点:select * from my_categorys where left_value > 2 and right_value < 7。
就得到了(3)c(4)和(5)d(6)。
1.不必每次都载入所有的分类,因为不是每个人都对每一个节点下的内容感兴趣,既然不会打开就不要载入,节约资源
2.不管你用不用递归,其实你都要一次性把所有的资源装入内存,我认为不妥,且有点浪费
因此建议你用ajax配合json来实现,做法简单,而且节约资源.
循环大类(dt),然后当中再循环小类(dd)的一个四维数组。
请求写一个给我研究一下,就和我递归输出的那个结果一样;谢谢了!
<dl class="fore1">
<dt>
<a href="http://e.360buy.com/">
电子书刊
</a>
</dt>
<dd>
<em>
<a href="http://e.360buy.com/ebook.html">
电子书
</a>
</em>
<em>
<a href="http://e.360buy.com/network.html">
网络原创
</a>
</em>
<em>
<a href="http://e.360buy.com/magazine.html">
数字杂志
</a>
</em>
<em>
<a href="http://e.360buy.com/media.html">
多媒体图书
</a>
</em>
</dd>
</dl>
<dl class="fore2">
<dt>
<a href="http://music.360buy.com/">
数字音乐
</a>
</dt>
<dd>
<em>
<a href="http://music.360buy.com/category_1.html">
通俗流行
</a>
</em>
<em>
<a href="http://music.360buy.com/category_2.html">
古典音乐
</a>
</em>
<em>
<a href="http://music.360buy.com/category_3.html">
摇滚说唱
</a>
</em>
<em>
<a href="http://music.360buy.com/category_4.html">
爵士蓝调
</a>
</em>
<em>
<a href="http://music.360buy.com/category_5.html">
乡村民谣
</a>
</em>
<em>
<a href="http://music.360buy.com/category_8.html">
有声读物
</a>
</em>
</dd>
</dl>
<dl class="fore3">
<dt>
<a href="http://mvd.360buy.com/">
音像
</a>
</dt>
<dd>
<em>
<a href="http://mvd.360buy.com/music.html">
音乐
</a>
</em>
<em>
<a href="http://mvd.360buy.com/movie.html">
影视
</a>
</em>
<em>
<a href="http://mvd.360buy.com/education.html">
教育音像
</a>
</em>
<em>
<a href="http://mvd.360buy.com/theme/4053-7.html">
游戏
</a>
</em>
</dd>
</dl>
</div>