邻接表模型具有正确构建列表标签的多级菜单列表问题

时间:2019-05-18 08:58:14

标签: php

我已经在Adjacency模型中构造了一个Mysql表。然后我在屏幕上得到了所需的输出,使用ul和li在多层(标题->子标题->主题)中显示了这些记录。当我查看源代码时,ul li的构建方式不像每个最后一个孩子(即)主题那样正确,其中包括打开和关闭ul li的内容

我拥有的表结构

syl_row_id | syl_title_name    | syl_parent_id  | syl_position_id  
------------------------------------------------------------------  
1          | Statistics Basics |     0          |   1  
2          | Central Tendency  |     1          |   1  
3          | Mean              |     2          |   1  
4          | Median            |     2          |   2  
5          | Mode              |     2          |   3  
6          | Probability Basics|     1          |   1  
7          | Probability       |     6          |   1  
8          | ODDS              |     6          |   2  

代码:

<?php
$pdo = new PDO("mysql:dbname=dbname;host=host","username","password");
$query = $pdo->query("Select * from tablename");
while($row = $query->fetch(PDO::FETCH_ASSOC))
{
if($row['syl_parent_id'] == 0)
{
$topic[] = $row['syl_row_id'];
$head .= "<h3>".$row['syl_title_name']."</h3>";
}
foreach($topic as $heading)
{
if($heading == $row['syl_parent_id'])
{
$subtopic[] = $row['syl_row_id'];
$head .= "<li>".$row['syl_title_name']."</li>";
}
else{
$subtopic[] = "";
}
}
foreach($subtopic as $subheading)
{
if($subheading == $row['syl_parent_id'])
{
$head .= "<ul><li>".$row['syl_title_name']."</li></ul>";
}
}
}
echo "<ul>";
echo $head;
echo "</ul>";
?>

Output for my code: 
<ul>
<h3>Statistics Basics</h3>
<li>Central Tendency</li>
<ul>
<li>Mean</li>
</ul>
<ul>
<li>Median</li>
</ul>
<ul>
<li>Mode</li>
</ul>
<li>Probability Basics</li>
<ul>
<li>Probability</li>
</ul>
<ul>
<li>ODDS</li>
</ul>
</ul>

Expected Output:
<h3>Statistics Basics</h3>
<ul>
<li>Central Tendency</li>
<ul>
<li>Mean</li>
<li>Median</li>
<li>Mode</li>
</ul>
<li>Probability Basics</li>
<ul>
<li>Probability</li>
<li>ODDS</li>
</ul>
</ul>

0 个答案:

没有答案