自己写了个递归算法,只能执行一次
研究了一天了,始终没找到问题所在,请高手指点,最好能给个修改好的代码!先谢了!
//删除子类及自身函数
function delNodes($id,$Conn){
$sql="select * from tvmenu where bid='$id'";
$result_sun=mysql_query($sql,$Conn);
$num=mysql_num_rows($result_sun); //查询该分类下子类数量
if($num>0){
while($rs=mysql_fetch_array($result_sun)){ //循环调用递归
delNodes($rs["id"],$Conn);
}
}else{
$sql="delete FROM tvmenu WHERE id='$id'";
$qu=mysql_query($sql,$Conn); //如果没有子类,直接删除
if($qu){
$del="";
echo "<script language='javascript'>alert('删除成功!');window.location='tree.php'</script>";
//exit;
}
}
}
delNodes($b,$Conn);
tvmenu数据表如下:
研究了一天了,始终没找到问题所在,请高手指点,最好能给个修改好的代码!先谢了!
//删除子类及自身函数
function delNodes($id,$Conn){
$sql="select * from tvmenu where bid='$id'";
$result_sun=mysql_query($sql,$Conn);
$num=mysql_num_rows($result_sun); //查询该分类下子类数量
if($num>0){
while($rs=mysql_fetch_array($result_sun)){ //循环调用递归
delNodes($rs["id"],$Conn);
}
}else{
$sql="delete FROM tvmenu WHERE id='$id'";
$qu=mysql_query($sql,$Conn); //如果没有子类,直接删除
if($qu){
$del="";
echo "<script language='javascript'>alert('删除成功!');window.location='tree.php'</script>";
//exit;
}
}
}
delNodes($b,$Conn);
tvmenu数据表如下:
function getDirectoryTree($data, $parentid = 0, $param, $treeid="tree"){
global $languages; if(count($data) > 0) {
if($parentid == 0) {
$str = " <ul id='" . $treeid . "' class='treeview'>";
} else {
$str = " <ul>";
}
$str1 = "";
foreach($data as $k => $v){
if($v->parentid == $parentid) {
$str1 .= "<li>";
$str1.= str_replace('#url#', $v->url, str_replace('#name#', $languages[$v->name], $param));
$str1 .= getDirectoryTree($data, $v->id, $param);
$str1 .= "</li>";
}
}
if($str1 == "") {
$str = "";
} else {
$str .= $str1 . "</ul>";
}
return $str;
}else {
return "";
}
}快下班了,这是我以前写的一个,看对你有没有帮助
0 => Array("id" => 329, "parent" => -1,"name" => "web", "user_id" => 3 ),
1 => Array("id" => 330, "parent" => 329, "name" => "php","user_id" => 3),
2 => Array("id" => 336,"parent" => 329,"name" => "nginx","user_id" => 3),
3 => Array("id" => 337,"parent" => 330,"name" => "apache","user_id" => 3),
4 => Array("id" => 338,"parent" => 336,"name" => "httpd", "user_id" => 3),
5 => Array("id" => 339,"parent" => 336,"name" => "httpd","user_id" => 3),
6 => Array("id" => 340,"parent" => 329,"name" => "httpd", "user_id" => 3),
7 => Array("id" => 341,"parent" => 329,"name" => "httpd", "user_id" => 3),
8 => Array("id" => 342,"parent" => -1,"name" => "httpd", "user_id" => 3),
9 => Array("id" => 343,"parent" => 329,"name" => "httpd", "user_id" => 3),
10 => Array("id" => 344,"parent" => 329,"name" => "httpd", "user_id" => 3),
14 => Array("id" => 348,"parent" => 329,"name" => "httpd", "user_id" => 3),
15 => Array("id" => 349,"parent" => -1,"name" => "httpd", "user_id" => 3),
100 => Array("id" => 3444,"parent" => 329,"name" => "httpd", "user_id" => 3)
);
function tree($array=null,$tid=null,$tpid=null,$tname=null,$pid=-1)
{
$str="";
foreach($array as $key=>$value)
{
if($value[$tpid]==$pid)
{
unset($array[$key]);
$str.="<li>".$value[$tname].
tree($array,$tid,$tpid,$tname,$value[$tid])."</li>";
}
}
return $str ? "<ul>$str</ul>" : '';
}
print_r(tree($array,"id","parent","name"));
改成
delNodes($rs["bid"],$Conn);
试试
提示:PHP has encountered a Stack overflow
echo "<script language='javascript'>alert('删除成功!');window.location='tree.php'</script>";改为调用delNodes函数之后输出该语句