2014-06-29 45 views
0

我想用mysql创建一个动态页脚菜单(不是多层次)。带MySQL的PHP​​动态页脚菜单

我的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

我已经尝试过不同的过程,但那些显示错误(可能是我的错误代码),但这次它显示至少一个链接。

我无法做到。

我该怎么办?

回答

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>'; 
+0

我试过你的代码。它显示“关于我们/联系我们”,但没有显示“家” – Raj

+0

得到了我的答案。谢谢@ mi6crazyheart – Raj

0

没有与

$footer_menu = '<li><a href="'.$menu_url.'">'.$menu_name.'</a></li>'; 

$ footer_menu将只能从最后一个循环的内容主要包括两个方面,因为“=”将覆盖它在每个循环,并且您使用此全局变量,因为他们的内容仅从第一行开始。

试试这个:

所有的
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; 
}