2
我正尝试使用PHP以下列格式构建动态生成的无序列表。我使用CodeIgniter,但它可以只是普通的PHP。从MySQL数据库中使用PHP + CodeIgniter生成无序列表
这是我需要达到的最终输出。
<ul id="categories" class="menu">
<li rel="1">
Arts & Humanities
<ul>
<li rel="2">
Photography
<ul>
<li rel="3">
3D
</li>
<li rel="4">
Digital
</li>
</ul>
</li>
<li rel="5">
History
</li>
<li rel="6">
Literature
</li>
</ul>
</li>
<li rel="7">
Business & Economy
</li>
<li rel="8">
Computers & Internet
</li>
<li rel="9">
Education
</li>
<li rel="11">
Entertainment
<ul>
<li rel="12">
Movies
</li>
<li rel="13">
TV Shows
</li>
<li rel="14">
Music
</li>
<li rel="15">
Humor
</li>
</ul>
</li>
<li rel="10">
Health
</li>
这里是我的SQL,我有工作。
--
-- Table structure for table `categories`
--
CREATE TABLE IF NOT EXISTS `categories` (
`id` mediumint(8) NOT NULL auto_increment,
`dd_id` mediumint(8) NOT NULL,
`parent_id` mediumint(8) NOT NULL,
`cat_name` varchar(256) NOT NULL,
`cat_order` smallint(4) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
所以我知道我将需要至少1个foreach循环来生成第一级类别。
我不知道如何在每个循环内迭代并检查父母,并以动态的方式做到这一点,以便可以有一个无尽的儿童树。
感谢您提供任何帮助。
添
嘿,伙计, 太棒了。效果很好。非常感谢您花时间制作和分享这些代码。我想知道是否有一种简单的方法来使脚本具有足够的通用性,以便它可以处理多个列表(因此在数据库中使用dd_id作为列表标识符)? 再次,谢谢你这么多 Tim – Tim 2010-05-25 04:41:30
@Tim - 没问题。至于使它是通用的,如何将最初的位(构建$ items数组)放在一个需要$ id参数的函数中,然后修改SQL查询以选择dd_id = $ id? – Chris 2010-05-25 06:45:17
嘿克里斯, 我和我的朋友一直在努力解决这个问题,但我认为我最终会迷惑自己。你可以(如果你有任何时间)发布一个例子,说明如何根据db中的dd_id字段生成列表? – Tim 2010-05-27 11:36:46