phpphp 无限分类怎么做弄

关于php的无限级分类 哪位大神能说说它的原理? - 知乎4被浏览355分享邀请回答1添加评论分享收藏感谢收起博客分类:
header("Content-type:text/charset=utf-8");&&
$db=new mysqli("","root","","music") ; //实例化一个数据库连接。使用这个前一定要确保已经加载了mysqli类库,或者用mysql_connect这个方式连接。&&
if(mysqli_connect_errno()){&
&&& echo "链接失败:".mysqli_connect_error();&
&&& exit(); }&&
$db-&query("set names utf8");&
$result=$db-&query("select name from class where f_id=0"); //查找f_id=0的分类,也就是查找每一个大类。&
while($row=$result-&fetch_assoc()){&
&&& //& echo $row['name']."&br&";&&&&&&& //这样就把每个大类循环出来了。&
//同样我们可以把新闻的子类循环出来。&
$result=$db-&query("select * from class where f_id=1"); //查找f_id=1的分类,也就是查找‘新闻’的子类。&
while($row=$result-&fetch_assoc()){&
&&& //& echo $row['name']."& ";&&&&&&& //这样就把‘新闻’的子类循环出来了。注意:只是子类,不包括孙子类。&
//写到这里,我们会发现一个问题,如果这个分类是10级分类,难道我们要写10个循环把它每个子类循环出来?如果是更多级分类呢,这样写显然是不现实的。&
//那又有什么办法解决呢?我们可以写一个递归的函数,把f_id作为参数传入,不断循环每一个f_id的值,也就是说把每一个f_id值的子类循环出来。&
//首先我们把各个分类的值保存在一个二维数组中,在下面的递归函数里有用。&
$result=$db-&query("select * from class");&
while($row=$result-&fetch_assoc()){&
&&&& $arr[]=array($row[id],$row[f_id],$row[name]);&&& //每一行保存一个分类的id,f_id,name的信息。&
function fenlei($f_id=0){&&&& //$f_id初始化为0,也就是从最大分类开始循环.&
&&& global $&& //声明$arr为全局变量才可在函数里引用。&
&&& for($i=0;$i&count($arr);$i++){&&&&&& //对每个分类进行循环。&
&&&&&&&&&& if($arr[$i][1]==$f_id){&&&&&&&& //$arr[$i][1]表示第$i+1个分类的f_id的值。开始$f_id=0,也就是把f_id=0的分类输出来。&
&&&&&&&&&&&&&&&& echo $arr[$i][2]."&br&"; //$arr[$i][1]表示第$i+1个分类的name的值。&
&&&&&&&&&&& fenlei($arr[$i][0]);&& //$arr[$i][1]表示第$i+1个分类的id的值。进行递归,也就是把自己的id作为f_id参数把自己的子类再循环出来。&
fenlei($f_id=1);
fenlei($f_id=0);
?&&
浏览: 1713 次
(window.slotbydup=window.slotbydup || []).push({
id: '4773203',
container: s,
size: '200,200',
display: 'inlay-fix'PHP简单实现无限级分类的方法
作者:潇湘竹叶
字体:[ ] 类型:转载 时间:
这篇文章主要介绍了PHP简单实现无限级分类的方法,涉及sql语句及递归调用的相关技巧,需要的朋友可以参考下
本文实例讲述了PHP简单实现无限级分类的方法。分享给大家供大家参考,具体如下:
数据库结构:
CREATE TABLE IF NOT EXISTS `city` (
`id` int(11) NOT NULL auto_increment,
`name` varchar(30) character set utf8 collate utf8_unicode_ci NOT NULL default '0',
`parentId` int(11) NOT NULL default '0'
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=7 ;
$db=new DB($Config['host'],$Config['user'],$Config['password'],$Config['port'],$Config['db'],$Config['charset']);
function findCity($table,$id=0,$level=1){
$findSql="select id,name,parentId from $table where parentId={$id} order by id";
$findResult=$db-&getArray($findSql);
$num=$db-&numR
$logoStr="|";
for($i=0;$i&$$i++){
$logoStr.="--";
if($num!=0){
for($j=0;$j&$$j++){
echo "&option value={$findResult[$j]['id']}&{$logoStr}{$findResult[$j][name]}&/option&";
findCity($table,$findResult[$j]['id'],$level+1);
findCity(city);
更多关于PHP相关内容感兴趣的读者可查看本站专题:《》、《》、《》、《》、《》、《》、《》、《》、《》及《》
希望本文所述对大家PHP程序设计有所帮助。
您可能感兴趣的文章:
大家感兴趣的内容
12345678910
最近更新的内容
常用在线小工具}

我要回帖

更多关于 php无限分类 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信