2 回答
TA贡献1921条经验 获得超9个赞
我知道这与您的代码非常不同,但是我几周前针对类似情况编写了此代码,因此我根据您的情况对其进行了一些调整:
<?php
echo get_items(1);
function get_items($id){
global $conn; //db connection object
$html = '';
$sql = mysqli_query($conn, "SELECT * FROM snm_content WHERE catid = $id");
while($row = mysqli_fetch_assoc($sql)){
$html .= '<li>'.$row['title'].'</li>';
}
$sql = mysqli_query($conn, "SELECT * FROM snm_categories WHERE parent_id = $id");
while($row = mysqli_fetch_assoc($sql)){
$html .= '<li>'.$row['title'].'
<ul>'.get_items($row['id']).'</ul>
</li>';
}
return $html;
}
?>
我认为您可以轻松修改它以获得您需要的确切 html 标记,但本质就在那里。如果您对此有任何疑问,请不要犹豫!
顺便说一下,我使用了和你一样的数据库结构,我在 snm_content 和 snm_categories 中输入了一些行,这是我得到的输出:
<li>cat 0
<ul>
<li>article 0</li>
<li>cat 1
<ul>
<li>article 1</li>
<li>article 2</li>
</ul>
</li>
<li>cat 2
<ul>
<li>article 3</li>
</ul>
</li>
</ul>
</li>
<li>cat 3
<ul>
<li>article 4</li>
</ul>
</li>
TA贡献1864条经验 获得超2个赞
我看到的第一个问题是在下面的代码中
while($submenu = $submenuconn->fetch_assoc()){
$artikelsubs = '<li class="menu-item"><a href="info/'.$submenu['alias'].'">'.$submenu['title'].'</a>';
}
如果有 10 篇文章,您存储的是最后一篇吗?此外,li由于某种原因,您没有结束标签。
由于我没有数据库来检查这一点,但根据我的理解,循环应该如下所示
while($submenu = $submenuconn->fetch_assoc()){
$artikelsubs .= '<li class="menu-item"><a href="info/'.$submenu['alias'].'">'.$submenu['title'].'</a></li>';
}
此外,如果文章列表基于 ,cat_id那么您也应该存储此数据
$menuData['articles'][$menu['cat_id']] = $artikelsubs;
并确保artikelsubs在内部 while 循环之前清空。然后你需要替换你的$html .= $artikelsubs;从menuData对象中获取它
- 2 回答
- 0 关注
- 137 浏览
添加回答
举报