PHP无限级分类之下拉列表式分类(下)

<?php
include ("conn.php");
function getList($pid=0,&$result=array(),$space=0){
    $space=$space+2;
    $sql="SELECT*FROM deepcate WHERE pid = $pid";
    $res = mysql_query($sql);
    while ($row = mysql_fetch_assoc($res)){
        $row['catename']=str_repeat('&nbsp;',$space).'|--|'.$row['catename'];
        $result[]=$row;
        getList($row['id'],$result,$space);
    }
    return $result;
}
$rs=getList();
echo"<select name='cate'>";
foreach ($rs as $key=>$val){
    echo "<option>{$val['catename']}</option>";
}
echo'</<select>'
?>

QQ截图20161029103008.png

对获得的数据进行美化得到上图样式,这就是无限级分类。

为了以后调用方便,我们把递归函数进行封装。

<?php
    include ("conn.php");
function getList($pid=0,&$result=array(),$space=0){
    $space=$space+2;
    $sql="SELECT*FROM deepcate WHERE pid = $pid";
    $res = mysql_query($sql);
    while ($row = mysql_fetch_assoc($res)){
        $row['catename']=str_repeat('&nbsp;',$space).'|--|'.$row['catename'];
        $result[]=$row;
        getList($row['id'],$result,$space);
    }
    return $result;
}
$rs=getList();
function displayCate($pid=0,$selected=1){
    $rs=getList($pid);
    $str='';
    $str.="<select name='cate'>";
    foreach ($rs as $key=>$val){
        $selectedstr='';
        if ($val['id'] == $selected){
            $selectedstr="selected";
        }
        $str.="<option{$selectedstr}>{$val['catename']}</option>";
    }
    return $str.='</select>';
}
echo displayCate(0,2);
?>

这样我们的无限级分类列表样式就完成了。

继续学习
||
<?php include ("conn.php"); function getList($pid=0,&$result=array(),$space=0){ $space=$space+2; $sql="SELECT*FROM deepcate WHERE pid = $pid"; $res = mysql_query($sql); while ($row = mysql_fetch_assoc($res)){ $row['catename']=str_repeat(' ',$space).'|--|'.$row['catename']; $result[]=$row; getList($row['id'],$result,$space); } return $result; } $rs=getList(); function displayCate($pid=0,$selected=1){ $rs=getList($pid); $str=''; $str.="<select name='cate'>"; foreach ($rs as $key=>$val){ $selectedstr=''; if ($val['id'] == $selected){ $selectedstr="selected"; } $str.="<option{$selectedstr}>{$val['catename']}</option>"; } return $str.='</select>'; } echo displayCate(0,2); ?>
提交重置代码
  • 推荐课程
  • 评论
  • 问答
  • 笔记
  • 课件下载
phpcn_u2966

phpcn_u2966

这个函数getList($pid=0,&$result=array(),$space=0),在$result前加‘&’符号是什么意思?没加这个符号只显示父类的。

4年前    添加回复 0

回复

父级元素没有子类却出来了

[最新 无忌哥哥 的回答]有错误的话把错误提示和代码界面贴出来,不然不知道你到底哪里有错

时间:4年前

晚枫

晚枫

传引用,是把地址直接传过去。不是传值。

2年前 0

渺

function getList($pid=0,&$result=array(),$space=0){ $space=$space+2; $sql="SELECT*FROM deepcate WHERE pid = $pid";判断数据库中是否还有数据的pid等于id的,有的话就属于该id下的子类 $res = mysql_query($sql); while ($row = mysql_fetch_assoc($res)){ $row['catename']=str_repeat(' ',$space).'|--|'.$row['catename']; $result[]=$row; getList($row['id'],$result,$space);// 把ID循环回调传入,判断数据库中是否还有数据的pid等于id的,有的话就属于该id下的子类,就取出来处理,再循环查找下去。 } return $result; }

5年前 0

课件暂不提供下载,工作人员正在整理中,后期请多关注该课程~