使用MySQL的PHP动态页脚菜单
我想用mysql创建一个动态页脚菜单(不是多级菜单) 我的MySQL表如下所示使用MySQL的PHP动态页脚菜单,php,mysql,menu,Php,Mysql,Menu,我想用mysql创建一个动态页脚菜单(不是多级菜单) 我的MySQL表如下所示 --------------------------------------------------- | menu_id | menu_name | menu_url | short_id | ---------------------------------------------------- | 1 | Home | index.php | 1 |
---------------------------------------------------
| 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;
}
mysql\u select\u db($db,$con);
$f_menu\u qry=“按短id ASC从页脚菜单顺序选择*”;
$fm=mysql\u query($f\u menu\u qry,$con);
$f_menu=mysql_fetch_assoc($fm);
$totrows=mysql\u num\u行($fm);
$menu_name=$f_menu['menu_name'];
$menu_url=$f_menu['menu_url'];
公共函数getFooterMenu(){
全局$fm、$f_菜单、$menu_名称、$menu_url、$totrows;
$footer_菜单=“”;
$cnt=0;
while($clt\u f\u menu=mysql\u fetch\u assoc($fm)){
$cnt++;
$footer_菜单=“”;
如果($cnt==$totrows){
返回;
}
}
echo$footer_菜单;
}
输出应类似于Home/About Us/Contact Us
但输出仅显示Home
我尝试了不同的进程,但这些进程显示了错误(可能是因为我的错误代码),但这次它至少显示了一个链接
我做不到
我该怎么办?我的工作主要有两个方面
$footer_menu = '<li><a href="'.$menu_url.'">'.$menu_name.'</a></li>';
$footer\u菜单=””;
$footer_菜单将仅包含最后一个循环中的内容,因为“=”将在每个循环中覆盖它,并且您在此处使用的全局变量仅包含第一行中的内容
试试这个:
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;
}
mysql\u select\u db($db,$con);
echo getfooter菜单($con);
公共函数getFooterMenu($con){
$sql=“从页脚菜单中按短\u id ASC顺序选择*”;
$mid=mysql\u查询($sql,$con);
$footer_菜单=“”;
而($rs=mysql\u fetch\u assoc($mid)){
$footer_菜单。='';
}
返回$footer\u菜单;
}
首先,使用旧的mysql扩展不是一个好的做法。最好使用PDO或MySQLi
- 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>';
mysql\u select\u db($db,$con);
$f_menu\u qry=“按短id ASC从页脚菜单顺序选择*”;
$fm=mysql\u query($f\u menu\u qry,$con);
$clt_f_menu=array();
while($rows=mysql\u fetch\u数组($fm))
{
$clt\u f\u menu[$rows['menu\u id']]=array(
“菜单名称”=>$rows[“菜单名称”],
'菜单url'=>$rows['菜单url']
);
}
回声';
回声“”;
foreach($clt\u f\u菜单为$key=>$value){
回音“”;
}
回声“
”;
回声';
我已尝试了您的代码。它正在显示关于我们的信息/联系我们
但没有显示主页
得到了我的答案。谢谢@mi6crazyheart