首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >带有<ul><li>的递归PHP函数

问带有<ul><li>的递归PHP函数
EN

Stack Overflow用户
提问于 2012-12-05 13:34:13
回答 1查看 1.8K关注 0票数 2

如何为递归的PHP函数安排<ul>和<li>?我做了以下几点,但没有正常工作:

代码语言:javascript
复制
<?php
echo '<ul>';
$sql = mysql_query("select * from categories where parent_id = 0");
while($rs=mysql_fetch_array($sql)){
   echo '<li>'.$rs['name'];
   echo show_subcategory(($rs['cat_id']));
   echo '</li>';
}
echo '</ul>';

function show_subcategory($category_id){
$sql = mysql_query("select * from categories where parent_id ='$category_id'");
if(mysql_num_rows()>0){
echo '<ul>';
   while($rs=mysql_fetch_array($sql)){
     echo  '<li>'.$rs['name'];
     echo show_subcategory(($rs['cat_id']));
     echo '</ul></li>';
   }
 }else{
  echo '</li>';
 }
}
?>
代码语言:javascript
复制
CREATE TABLE IF NOT EXISTS categories (
  cat_id int(11) NOT NULL AUTO_INCREMENT,
  parent_id int(11) NOT NULL DEFAULT '0',
  name varchar(20) NOT NULL,
  description text NOT NULL,
  slug varchar(50) NOT NULL,
  PRIMARY KEY (cat_id)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=8 ;


INSERT INTO categories (cat_id, parent_id, name, description, slug) VALUES
(1, 0, 'programming', 'Forum ', 'programming'),
(2, 1, 'php', 'php programming', 'php'),
(3, 1, 'python', '', ''),
(4, 1, 'java', '', ''),
(5, 1, 'visual basic', '', ''),
(6, 2, 'codeigniter', '', ''),
(7, 2, 'joomla', '', '');    
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-12-05 13:43:08

因为它是一个递归函数,应该输出每个类别和所有子类别的列表,所以您也可以将“顶级”父类别显示移到其中(并通过调用show_subcategory(0);启动它。

之后,我们可以删除</ul>和</li>标记,这样我们就可以得到类似于以下内容的内容:

代码语言:javascript
复制
function show_subcategory($category_id){
    $sql = mysql_query("select * from categories where parent_id ='$category_id'");
    if(mysql_num_rows()>0){
        echo '<ul>';
        while($rs = mysql_fetch_array($sql)){
            echo  '<li>' . $rs['name'];
            echo show_subcategory(($rs['cat_id']));
            echo '</li>';
        }
        echo '</ul>';
    }
}

show_subcategory(0);

边注,未具体回答:

我建议升级到MySQLi或PDO扩展。这两种支持已准备好的语句,这些语句提供了针对SQL注入攻击的安全性(您当前的代码很容易受到这种攻击)。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13724455

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档