我有一个递归函数来显示类别和子类别,它运行良好,但在每个位置都添加了额外的<ul></ul>
。
php代码
<?php
echo '<ul class="nav">';
function mainMenu($parentId, $connection) {
$sqlTours = "SELECT * FROM categories
WHERE category_parent = ".$parentId." ORDER BY category_order ASC";
$rsTours = mysql_query($sqlTours, $connection) or die(mysql_error());
$totalToursRows = mysql_num_rows($rsTours);
echo "<ul>";
while($rowsTours = mysql_fetch_assoc($rsTours)) {
$categoryId = $rowsTours['category_id'];
$categoryName = $rowsTours['category_name_en'];
echo "<li>"
<a href='"products.php?category_id=".$categoryId ."'"
data='"".$categoryId."'">".$categoryName."</a>";
mainMenu($categoryId, $connection);
echo "</li>";
}
echo "</ul>";
}
mainMenu(0, $connection);
echo '</ul>';
?>
这是我从这个函数中得到的html
<ul class="nav">
<ul>
<li> <a href="products.php?category_id=1" data="1">Egypt</a>
<ul>
<li> <a href="products.php?category_id=2" data="2">Hurghada</a>
<ul>
<li> <a href="products.php?category_id=7" data="7">Sea Trips</a>
<ul>
</ul>
</li>
<li> <a href="products.php?category_id=6" data="6">Safari Trips</a>
<ul>
</ul>
</li>
</ul>
</li>
<li> <a href="products.php?category_id=3" data="3">Sharm El Sheikh</a>
<ul>
</ul>
</li>
<li> <a href="products.php?category_id=4" data="4">Taba</a>
<ul>
</ul>
</li>
</ul>
</li>
<li> <a href="products.php?category_id=5" data="5">Turkey</a>
<ul>
</ul>
</li>
</ul>
</ul>
这是预期的输出
<ul class="nav">
<li><a href="products.php?category_id=1" data="1">Egypt</a>
<ul>
<li><a href="products.php?category_id=2" data="2">Hurghada</a>
<ul>
<li><a href="products.php?category_id=7" data="7">Sea Trips</a></li>
<li><a href="products.php?category_id=6" data="6">Safari Trips</a></li>
</ul>
</li>
<li><a href="products.php?category_id=3" data="3">Sharm El Sheikh</a></li>
<li><a href="products.php?category_id=4" data="4">Taba</a></li>
</ul>
</li>
<li> <a href="products.php?category_id=5" data="5">Turkey</a></li>
</ul>
如果我正确理解你的问题,你想去掉递归下降底部的空<ul></ul>
标记。
您已经将行计数到$totalToursRows
中,因此使用它来防止创建空节点:
function mainMenu($parentId, $connection) {
$sqlTours = "SELECT * FROM categories
WHERE category_parent = ".$parentId." ORDER BY category_order ASC";
$rsTours = mysql_query($sqlTours, $connection) or die(mysql_error());
$totalToursRows = mysql_num_rows($rsTours);
if ($totalToursRows > 0) {
if ($parentId !== 0) {
echo "<ul>";
}
while($rowsTours = mysql_fetch_assoc($rsTours)) {
$categoryId = $rowsTours['category_id'];
$categoryName = $rowsTours['category_name_en'];
echo "<li>";
echo "<a href='"products.php?category_id=".$categoryId ."'"
data='"".$categoryId."'">".$categoryName."</a>";
mainMenu($categoryId, $connection);
echo "</li>";
}
if ($parentId !== 0) {
echo "</ul>";
}
}
}
mainMenu(0, $connection);
根据评论请求编辑。