我想用mysql创建一个动态页脚菜单(不是多级)。
我的MySQL表格如下......
---------------------------------------------------
| menu_id | menu_name | menu_url | short_id |
----------------------------------------------------
| 1 | Home | index.php | 1 |
----------------------------------------------------
| 2 | Contact Us | contact.php| 3 |
----------------------------------------------------
| 3 | About Us | abt.php | 2 |
----------------------------------------------------
HTML结构就像......
<div class="footer-menu">
<ul>
<li><a href="index.php">Home</a></li>
<li><a href="abt.php">About Us</a></li>
<li><a href="contact.php">Contact Us</a></li>
</ul>
</div>
我编码像......
mysql_select_db($db,$con);
$f_menu_qry = "SELECT * FROM footermenu ORDER BY short_id ASC";
$fm = mysql_query($f_menu_qry,$con);
$f_menu = mysql_fetch_assoc($fm);
$totrows = mysql_num_rows($fm);
$menu_name = $f_menu['menu_name'];
$menu_url = $f_menu['menu_url'];
public function getFooterMenu(){
global $fm, $f_menu, $menu_name, $menu_url, $totrows;
$footer_menu = '';
$cnt = 0;
while ($clt_f_menu = mysql_fetch_assoc($fm)){
$cnt++;
$footer_menu = '<li><a href="'.$menu_url.'">'.$menu_name.'</a></li>';
if($cnt == $totrows){
return;
}
}
echo $footer_menu;
}
输出应该像Home / About Us / Contact Us
但输出仅显示Home
。
我尝试了不同的进程,但是这些进程显示错误(可能是我的错误代码),但这次它至少显示了一个链接。
我无法做到。
我该怎么办?
答案 0 :(得分:1)
首先,使用旧的mysql扩展不是一个好习惯。最好使用PDO或MySQLi。
无论如何,我已经修改了你的代码了。你可以尝试这个。希望它能起作用..
mysql_select_db($db,$con);
$f_menu_qry = "SELECT * FROM footermenu ORDER BY short_id ASC";
$fm = mysql_query($f_menu_qry,$con);
$clt_f_menu = array();
while($rows = mysql_fetch_array($fm))
{
$clt_f_menu[$rows['menu_id']] = array(
'menu_name' => $rows['menu_name'],
'menu_url' => $rows['menu_url']
);
}
echo '<div class="footer-menu">';
echo '<ul>';
foreach ($clt_f_menu as $key => $value) {
echo '<li><a href="'.$value['menu_url'].'">'.$value['menu_name'].'</a></li>';
}
echo '</ul>';
echo '</div>';
答案 1 :(得分:0)
有两个主要方面
$footer_menu = '<li><a href="'.$menu_url.'">'.$menu_name.'</a></li>';
$ footer_menu将只包含最后一个循环的内容,因为&#34; =&#34;将在每个循环中覆盖它,并且您在这里使用的全局变量只包含第一行的内容。
试试这个:
mysql_select_db($db,$con);
echo getFooterMenu($con);
public function getFooterMenu($con){
$sql = "SELECT * FROM footermenu ORDER BY short_id ASC";
$mid = mysql_query($sql,$con);
$footer_menu = '';
while($rs = mysql_fetch_assoc($mid)) {
$footer_menu.= '<li><a href="'.$rs["menu_url"].'">'.$rs["menu_name"].'</a></li>';
}
return $footer_menu;
}