如何为递归的PHP函数安排<ul>和<li>?我做了以下几点,但没有正常工作:
<?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>';
}
}
?>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', '', ''); 发布于 2012-12-05 13:43:08
因为它是一个递归函数,应该输出每个类别和所有子类别的列表,所以您也可以将“顶级”父类别显示移到其中(并通过调用show_subcategory(0);启动它。
之后,我们可以删除</ul>和</li>标记,这样我们就可以得到类似于以下内容的内容:
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注入攻击的安全性(您当前的代码很容易受到这种攻击)。
https://stackoverflow.com/questions/13724455
复制相似问题