gpt4 book ai didi

php - 使用 PHP + CodeIgniter 从 MySQL 数据库生成无序列表

转载 作者:行者123 更新时间:2023-11-29 01:47:33 24 4
gpt4 key购买 nike

我正在尝试使用 PHP 以下列格式构建一个动态生成的无序列表。我正在使用 CodeIgniter,但它可以是普通的 php。

这是我需要实现的最终输出。

<ul id="categories" class="menu">
<li rel="1">
Arts &amp; 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 &amp; Economy
</li>
<li rel="8">
Computers &amp; 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 ;

所以我知道我至少需要一个 foreach 循环来生成第一级类别。

我不知道如何在每个循环中迭代并检查 parent 并以动态方式执行此操作,以便可以有无穷无尽的 child 树。

感谢您提供的任何帮助。

蒂姆

最佳答案

如果您要输出每个 类别,那么我可能会分两步进行:

首先,从数据库中抓取所有相关数据

$items = array();

$res = mysql_query(...);
while ($row = mysql_fetch_assoc($res)) {
$items[$row['parent_id']][] = $row;
}

然后您将所有项目按其父级分组。然后您可以使用递归函数来处理它们:

function showMenu($items, $parent = null) {
// Assuming root elements have parent_id of 0:
$index = $parent == null ? '0' : $parent;

if (empty($items[$index])) {
// No children, don't output anything
return;
}

echo '<ul', $parent == null ? ' id="categories" ... ' : '', '>';

foreach ($items[$index] as $child) {
echo '<li rel="', $child['id'], '">', htmlentities($child['cat_name']);
showMenu($items, $child['id']);
echo '</li>';
}

echo '</ul>';
}

showMenu($items);

为菜单中的每个项目递归调用该函数,并检查该项目是否有任何子项。如果是,它会打印出相关的 <li/>项并再次调用自身以打印出那个项的子项。

关于php - 使用 PHP + CodeIgniter 从 MySQL 数据库生成无序列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2900987/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com