PHP关于通过递归函数显示所有分类的问题

<?php
function zilei($fid){

$sql="select * from dangan_class where f_id=$fid";
$query=mysql_query($sql);
while($row=mysql_fetch_array($query)){
?>
<form action="" method="post">
<tr><td><input type="hidden" name="id" value="<?php echo $row[id] ?>"/>
<input type="text" name="name" value="<?php echo $row[name]?>"/>
<input type="submit" name="update_class" value="更新"/>
<input type="button" name="button" value="删除" onClick="location.href='?del=<?php echo $row[id]?>'"/>
</td></tr> </form>
<?php
$fid=$row[id];
zilei ($fid);
}

zilei(0);
?>
大家帮忙看一下,哪里不对,应该怎么改啊?现在运行结果什么也不显示

首先需要搞明白你的数据库结构,你的档案类别数据库表 dangan_class 是不是三字段:id、name、f_id,其中id为主键,f_id为自关联的外键,表示上一分类,0表示最上级分类,对不对?

树状枚举出所有类别的代码可以这样:
<?php
function zilei($fid,$level){
$sql="select id,name from dangan_class where f_id=$fid";
$query=mysql_query($sql);
while(list($id,$name)=mysql_fetch_array($query)){
echo str_repeat("==",$level),$name,"<a href='?del=$id'>删除</a><br>\n";
zilei($id,$level+1);
}

mysql_free_result($query);

}
zilei(0,0);

?>

为了结构简单,我上面只做了删除的代码,修改的部分你自行加上,你也可以先调试好了删除的代码再加。

代码里面的==是为了缩进,你可以换为全角的空白,或者其它符号。来自:求助得到的回答
温馨提示:内容为网友见解,仅供参考
第1个回答  2013-06-15
首先你这个是几层嵌套关系?
例如是2层,需要父节点与子节点
第 1层 传入参数 是父节点
第2层 传入参数 是父节点与子节点

然后你再想遍历的事情
第2个回答  2013-06-15
你的思路不太对,首先递归不是这么用--!,然后取所有分类的话最好一次取出然后对数组操作,生成树形结构.
第3个回答  2013-06-15
你的用法有问题,递归函数最后必须要返回,不能无限循环下去。

PHP关于通过递归函数显示所有分类的问题
首先需要搞明白你的数据库结构,你的档案类别数据库表 dangan_class 是不是三字段:id、name、f_id,其中id为主键,f_id为自关联的外键,表示上一分类,0表示最上级分类,对不对?树状枚举出所有类别的代码可以这样:<?php function zilei($fid,$level){ sql="select id,name from dangan_class ...

PHP关于通过递归函数显示所有分类的问题
首先函数不能像你这样封装,而且没必要使用递归,循环就可以了(当然函数的自我嵌套循环就是递归算法),我的代码如下:sql = "SELECT * FROM `dangan_class` WHERE f_id = 1"; \/\/ 这里的f_id可以用变量,我只是演示,所以就填写一个具体的值\/\/ 获取结果集$result = mysql_query($sql);\/\/ 用...

thinkphp用递归怎么实现无限分类
递归函数即为自调用函数,在函数体内直接或间接自己调用自己,但需要设置自调用的条件,若满足条件,则调用函数本身,若不满足则终止本函数的自调用,然后把目前流程的主控权交回给上一层函数来执行,可能这样给大家讲解,还是很难明白。思路:先建立对应的数据库和表:请注意pid和id的外键关联关系,最顶...

PHP怎么递归
';}return $str; }以上函数get_str()通过递归,不断查询下级分类,并最终返回字符串,大家可以根据项目需求修改其中的str,最终生成一个无限分级列表:include_once('connect.php'); \/\/连接数据库,connect.php文件自己写一个啊 echo get_str(0); \/\/输出无限级分类 效果如:接着我们来看返回数组...

PHP工程师面试常见问题有哪些
一、技术问题 (1)基础知识:如数组的操作,变量的操作,字符串的处理。主要考察数组、字符串的函数。还有cookie和session的概念和区别。(2)面向对象:面向对象的思想和理论知识,如继承、接口、抽象类、多态等。 (3)文件操作:比较典型的两个问题:①遍历目录:使用递归来遍历目录,延伸出来就是...

php递归查询不会,,求教。就是一个三级分类传个ID找到他的上级,还有父级...
id=" . $id;return($GLOBALS['db']->getone($sql ));} 递归,就是根据现有的id,重复取。上面get_parent_id只是获取父id,当然,你可以写一个直接获取祖父id的函数。不过,现在大部分php网站,都只会有获取父类的函数,想discuz,ecshop等。获取祖父id,就是不断的获取该id的父id。

关于php递归函数创建级联目录的困惑
如果没有 继续dirname($dir) 判断a\/b\/c\/d路径的d文件夹有没有 如果没有 继续dirname($dir) 判断a\/b\/c路径的c文件夹有没有 依此类推直到 dirname($dir) 判断a路径的时候 不存在执行当前递归层的mkdir($dir) 创建a 存在则return,然后执行当前递归层上一级的mkdir($dir) 创建a\/b 之...

新手:PHP读指定分类下面的所有分类
是无限极分类吗。如果是的话,这里有我自己练习做的无限极分类,可以参考下。array=array( array('id'=>1,'pid'=>0,'name'=>'北京'), array('id'=>2,'pid'=>1,'name'=>'丰台'), array('id'=>3,'pid'=>0,'name'=>'浙江'), array('id'=>4,'pid'=>3,'name'=...

php递归的问题,请大神门指点
问题出现的原因其实挺简单,你用以下的试下:function array_key_exists_d($key,$arr){ \/\/判读$arr是否是一个数组 if(!is_array($arr)||empty($arr)) return false; foreach ($arr as $keys=>$value){ var_dump($key); var_dump($keys); echo ''; if($ke...

php如何查找会员无限分类的所有上级和所有下级
这个就要看你的数据库是怎么实现的。我之前给一个人做个一个类似的会员推广提成的模块,就a推广出的a-1,a-2继续推广,得到a-1-1,a-1-2等等。我的数据库设计思路如下:用户表中有一个son这么一个字段,这个字段中存放名下所有会员的id,用分号隔开。这个字段的维护:比如a-1-1推广出了一个a...

相似回答