Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/244.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用MySQL的PHP动态页脚菜单_Php_Mysql_Menu - Fatal编程技术网

使用MySQL的PHP动态页脚菜单

使用MySQL的PHP动态页脚菜单,php,mysql,menu,Php,Mysql,Menu,我想用mysql创建一个动态页脚菜单(不是多级菜单) 我的MySQL表如下所示 --------------------------------------------------- | menu_id | menu_name | menu_url | short_id | ---------------------------------------------------- | 1 | Home | index.php | 1 |

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