我有一个包含21个主要项目的菜单,其中大多数都有自己的子项目。
我希望能够只显示第一个' 16'其中 - $menu_number['VALUE']
在数据库中包含此值,因此只有前16个将正常显示,其余的应该在"更多"放置在第16个主要项目之后的项目,该项目将包含其余项目及其子项目。
现在是:
主页
服务>服务1,服务2
投资组合>投资组合1,投资组合2
.....
项目>项目1,项目2,项目3
关于我们>分项1,分项2
联系>分项1,分项2
这应该是这样的:
主页
服务>服务1,服务2
投资组合>投资组合1,投资组合2
.....
项目>项目1,项目2,项目3
更多>关于我们(>子项目1,子项目2),联系人(>子项目1,子项目2)
这是当前的代码:
$menu_number = mysql_fetch_array($menu_number, MYSQL_ASSOC);
echo $menu_number['VALUE'];
$counter = 0;
$sql = "SELECT * FROM $tablename WHERE `Parent` = '0' AND Type LIKE 'top' ORDER BY `Order` ASC";
$result = mysql_query($sql) or die ("Error: Query Failed! " .mysql_error());
$output = "<nav><ul>";
while ($rs = mysql_fetch_array($result)) {
$rs['Link'] = preg_replace('/\|.*$/','',$rs['Link']);
$output .= "<li class='menu_top' id='".$rs['ID']."'><a href='".$rs['Link']."'>".$rs['Name']."</a>".++$counter;
$sql2 = "SELECT * FROM $tablename WHERE `Parent` = '".$rs['ID']."' ORDER BY `Order` ASC";
$result2 = mysql_query($sql2) or die ("Error: Query Failed! " .mysql_error());
if (mysql_num_rows($result2) != 0) {
$output .= "<ul class='menu_sublinks' id='".$rs['ID']."'>";
while ($rs2 = mysql_fetch_array($result2)){
$rs2['Link'] = preg_replace('/\|.*$/','',$rs2['Link']);
$output .= "<li class='menu_sublink' id='".$rs['ID']."'><a href='".$rs2['Link']."'>".$rs2['Name']."</a></li>";
}
$output .= "</ul></li>";
}
}
$output .="</ul></nav";
我已经有一个计数器$counter
,现在我需要找到一种方法来添加<li>More</li>
和一个新的<ul>
,其中包含17 ... 21 {{1} } ..
我希望我解释得足够好,我试着这样做,但我有点困惑...... 谢谢你的帮助......
答案 0 :(得分:0)
这很容易,只需在第一个结束时添加另一个while循环..
if ( $counter >= 17 ) {
$output .= '<ul>';
while ($rs2 = mysql_fetch_array($result)) {
/* Add li's of id's > 17 here... */
}
$output .= '<ul>';
}
$output .= "</ul></li>";
内在的同时会简单地从结尾拉出结果。
此外。请尽快转移到mysqli_*
函数,因为mysql_*
已弃用,并且会在适当的时候从php中删除。
PS。您在代码末尾缺少</nav
的右括号..
$rs->Link
,$rs->ID
等等。恕我直言,这比数组引起的括号混乱更可读。
答案 1 :(得分:0)
while ($rs = mysql_fetch_array($result)) {
if (counter == 16)
{
echo "<li>more...</li></ul><ul>";
// Other existing code in the while loop goes here.
}
}
这将在第17项的迭代中添加代码,这是更好的,因为如果没有更多,您将不想添加“更多”。
但是虽然在PHP中添加此代码相当容易,但我宁愿在Javascript中执行此操作,因为Javascript还必须处理可见项的切换。因此,如果没有Javascript,那么只需要一个很长的项目列表而不是短列表,more
- 列表然后什么都没有...