跳转到主内容
极星编程网:以代码为星,赴技术山海!

紧急啊.我被递归给郁闷死了.请大家帮我一下

首先.我的[栏目]表结构是这样的 id   uid   titile  class 1    0       首页  url 2   0       新闻  news 3   0       产品  url 4   3      科技产品  product 5   4      电脑   product 现在的问题的  我想做一下 无限级的下拉框 用递归的方法,可以实现  where  uid = 0  开始循环  然后 get_str($row['id']); 递归 但是问题来了.  因为我的栏目 有一个CLASS字段  表示栏目类型...url表示外部链接  news表示新闻 product表示产品栏目 一级产品首先是一个外部链接类型的..他的下级栏目 是产品类型的 我在后台发布产品的时候.选择归属栏目的时候..............应该只把 class=prodcut和他的下级全部显示出来 那么我用递归的方法  在SQL加上条件语句  where class='product' 这样的话 没办法往下递归啊......  因为这个条件 如果不递归的话 就显示  科技产品    电脑 我在网上找的归递代码 都是UID 从 0开始的..........如果我  where class='product' 加上这个条件   那么科技产品的UID是3或者是其它数字 比如56789 也可能是0 这样就没办法递归啊...直接什么也不显示了...有什么好法方吗? 不知道我说的清不清楚. 回复讨论(解决方案) 列出 class=prodcut和他的下级 时,就不是从 where  uid = 0 开始了 对你示例的数据就是从 where  uid = 3 开始 所以你应该先获得起点的 id,然后再递归 列出 class=prodcut和他的下级 时,就不是从 where  uid = 0 开始了 对你示例的数据就是从 where  uid = 3 开始 所以你应该先获得起点的 id,然后再递归 求大神.帮帮我吧,,,帮我写一个我这个要求的  无限分类 的代码好吗 论坛是交流的地方,要代码请左转威客网
function foo($uid=0, $ext='') { $sql = "select * from tbl_name where uid=$uid" . ($uid && $ext ? " and class='$ext'" : ''); $rs = mysql_query($sql); while($row = mysql_fetch_assoc($rs)) { foo($row['id'], $ext); } }
function foo($uid=0, $ext='') { $sql = "select * from tbl_name where uid=$uid" . ($uid && $ext ? " and class='$ext'" : ''); $rs = mysql_query($sql); while($row = mysql_fetch_assoc($rs)) { foo($row['id'], $ext); } }
function foo($uid=0, $ext='') { $sql = "select * from column where uid=$uid" . ($uid && $ext ? " and class='$ext'" : ''); $rs = mysql_query($sql); while($row = mysql_fetch_assoc($rs)) { 这行报错啊 echo $row['id']; foo($row['id'], $ext); } } echo foo(0, "product") ; 哥哥 报的什么错? 报错我解决了 但是这个还是必须是 UID 从0开始啊.. 如果UID是空   那么class='$ext'  就报错啊 foo(3, "product") 不就从  产品 下面开始了吗? 要不要 product 无所谓 现在的问题是  这个 3 不是固定的啊 比如我的栏目有  首页  新闻 产品  视频 那么我在后台 发布产品的时候.,  可选栏目中  只把产品栏目列出来啊/ 那么 栏目中 可能有 多个 产品栏目.... 用于区分栏目类型  就靠 class字段中的值  比如product  表示全部是产品栏目 不用递归呢  可否实现 我一开始就讲了,既然你试要从某一个节点开始,就要先找到这个节点 无论这个节点存放在什么位置,都可以按其唯一的属性找到他 是啊.大哥 可是我不会从节点开始循环啊......怎么办,,,百度很多资料了.全是递归的
function foo($uid,$class=''){ if($class==''){ $sql = "select * from table where uid='".$uid."'"; }else{ $sql = "select * from table where uid='".$uid."' and class='".$class."'"; } $query = mysql_query($sql) or die(mysql_error()); while($result = mysql_fetch_assoc($query)){ echo $result['id'].' '.$result['title'].'
'; foo($result['id'],$result['class']); }}foo(0);
你能从根节点上递归,不就能从子节点上递归吗? 有什么区别呢? 用递归还是不用递归,这取决于你的需要。我在精华区有好几个帖子,你可以先看看 你能从根节点上递归,不就能从子节点上递归吗? 有什么区别呢? 用递归还是不用递归,这取决于你的需要。我在精华区有好几个帖子,你可以先看看 帮助我太多了.把分给您了 后来我自已用别的思路解决了.

相关文章