PHP动态页脚菜单与MySQL

时间:2014-06-29 12:53:57

标签: php mysql menu

我想用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

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

我无法做到。

我该怎么办?

2 个答案:

答案 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;
}