在我的网站上,顶部有一个菜单。这仅适用于5个菜单选项,但有时还有更多。这取决于从数据库中获取的内容。对于5个或更少的选项,它可以显示如下:
<ul>
<li>First option</li>
<li>Second option</li>
<li>Third option</li>
<li>Fourth option</li>
<li>Fifth option</li>
</ul>
如果有超过5个选项,则应显示如下:
<ul>
<li>First option</li>
<li>Second option</li>
<li>Third option</li>
<li>Fourth option</li>
<li>Misc.
<ul>
<li>Fifth option</li>
<li>Sixth option</li>
<li>Seventh option</li>
</ul>
</li>
</ul>
这是PHP代码,我有:
$result = //the query;
$numberOfRows = mysql_num_rows($result);
if ($numberOfRows > 5) {
$i = 1;
while($row = mysql_fetch_assoc($result)) {
while ($i < 5) {
//the part I don't get
}
}
} else {
while($row = mysql_fetch_assoc($result)) {
echo "<li>".$row['page']."</li>";
}
}
答案 0 :(得分:0)
您需要尝试以下操作:
while($row = mysql_fetch_assoc($result) && $i < 5) {
//your logic
$i++;
}
答案 1 :(得分:0)
试试这个:
$result = //the query;
$MAX_NUMBER = 5;
$count = 0;
$totalRows = mysql_num_rows($result);
while($row = mysql_fetch_assoc($result)){
$count++;
if($totalRows > $MAX_NUMBER && $count == $MAX_NUMBER){echo "<li><ul>Misc.";}
echo "<li>".$row['page']."</li>";
}
if($totalRows > $MAX_NUMBER){echo "</ul></li>";}
答案 2 :(得分:0)
像这样:
$numberOfRows = mysql_num_rows($result);
$i = 1;
while($row = mysql_fetch_assoc($result)) {
if($i==5) {
echo "<li>Misc.<ul><li>".$row['page']."</li>";
$i++;
continue;
}
echo "<li>".$row['page']."</li>";
$i++;
}
echo "</ul></li>";
答案 3 :(得分:0)
通常我会将所有内容转储到数组$data[]
中并进行处理。 (当我编写简单的代码块并将它们拼接在一起时,维护更容易)。这是代码片段: -
while($row = mysql_fetch_assoc($result))
{
$data[] = $row;
}
接下来,在避开$data[]
的同时处理while
。恕我直言,太多嵌套while
循环令人困惑,请尝试使用foreach()
if (sizeof($data) <= 5) {
// print simple <ul>
} else {
// Step1: print 4 rows with foreach()
// Step2: print ".misc" + extra UL & LI tags
// Step3: print 5th row onwards, foreach() again
// Step4: closing UL & LI tags.
}