【发布时间】:2014-03-08 07:07:57
【问题描述】:
数据库:
CREATE TABLE IF NOT EXISTS `category` (
`cat_id` int(11) NOT NULL AUTO_INCREMENT,
`cat_name` varchar(32) DEFAULT NULL,
`cat_name_sef` varchar(64) DEFAULT NULL,
`parent_id` int(11) DEFAULT '0',
PRIMARY KEY (`cat_id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
我的递归 codeigniter 函数需要帮助。
下面是我的函数代码:
function categories($parent_id = 0)
{
$sql = $this->db->where('parent_id', $parent_id)->order_by('cat_name', 'ASC')->get('category');
$html = '';
foreach ($sql->result() as $row)
{
$this->db->where('parent_id', $row->cat_id);
if ($this->db->count_all_results('category') != 0)
{
$html .= '<li><a href="#">' . $row->cat_name . '</a>';
$html .= $this->categories($row->cat_id);
}
else $html .= '<ul><li>' . anchor(array('category', $row->cat_id, $row->cat_name_sef), $row->cat_name) . '</li></ul>';
$html .= '</li>';
}
return $html;
}
这个函数的简单输出如下:
<li><a href="#">Smartphones</a>
<ul><li><a href="http://localhost/project/index.php/category/1/apple">Apple</a></li></ul></li>
<ul><li><a href="http://localhost/project/index.php/category/2/samsung">Samsung</a></li></ul></li>
<ul><li><a href="http://localhost/project/index.php/category/3/motorola">Motorola</a></li></ul></li>
<ul><li><a href="http://localhost/project/index.php/category/4/nokia">Nokia</a></li></ul></li>
我想像下面这样输出:
<li><a href="#">Smartphones</a>
<ul>
<li><a href="http://localhost/project/index.php/category/1/apple">Apple</a></li>
<li><a href="http://localhost/project/index.php/category/2/samsung">Samsung</a></li>
<li><a href="http://localhost/project/index.php/category/3/motorola">Motorola</a></li>
<li><a href="http://localhost/project/index.php/category/4/nokia">Nokia</a></li>
</ul>
</li>
希望我能解释我的问题。非常感谢您的建议。
【问题讨论】:
-
也发布表结构。这(你的问题)很容易做到,你应该自己弄清楚。你根本不需要递归。两个
foreach(),你就完成了...... -
已添加数据库表。谢谢。
标签: php codeigniter twitter-bootstrap recursion