Php 用MySQL创建的菜单只能在网站内部工作,不能在网站外部工作

Php 用MySQL创建的菜单只能在网站内部工作,不能在网站外部工作,php,mysql,menu,Php,Mysql,Menu,我希望有人能帮助我,因为我有一个菜单,是通过我的MySQL数据库自动生成的 因为我得到了在网站内部工作的菜单,我的意思是它与“test.dk/about”一起工作,但是当它像“”一样离开网站时,a href是空的 顺便说一句,这只是一个非常简单的UL LI菜单,没有下拉菜单或其他什么 这是我的剧本 static function build_menu() { $result = mysql_query("SELECT * FROM menu"); $menu = arra

我希望有人能帮助我,因为我有一个菜单,是通过我的MySQL数据库自动生成的

因为我得到了在网站内部工作的菜单,我的意思是它与“test.dk/about”一起工作,但是当它像“”一样离开网站时,a href是空的

顺便说一句,这只是一个非常简单的UL LI菜单,没有下拉菜单或其他什么

这是我的剧本

    static function build_menu()
{
    $result = mysql_query("SELECT * FROM menu");
    $menu = array();
    while ($row = mysql_fetch_assoc($result)) {
        if ($row["is_external"]) {
            $url = $row["url"];
        } else if (empty($row["is_external"])) {
            $url = get_page_url($row["page_id"]);
        }
        $menu[] = array("name" => $row["name"], "page_id" => $row["page_id"], "is_external" => $row["url"], "url" => $url);
    }
    return $menu;
}

static function get_page_url($page_id)
{
    $result = mysql_query("SELECT view_id FROM page WHERE id = '$page_id'");
    $result = mysql_fetch_assoc($result);
    $view_id = $result["view_id"];
    $result = mysql_query("SELECT listen_path FROM view WHERE id = '$view_id'");
    $result = mysql_fetch_assoc($result);
    $listen_path = $result["listen_path"];
    return $listen_path;
}

static function render()
{
    $result = mysql_query("SELECT * FROM menu"); ?>
    <div class="menu">
    <ul><?php while ($item = mysql_fetch_assoc($result)) { ?>
            <li><a href="<?php echo self::get_page_url($item["page_id"]) ?>"><?php echo $item["name"] ?></a>
            </li>                <?php } ?></ul></div><?php
}
静态函数构建菜单()
{
$result=mysql_查询(“从菜单中选择*);
$menu=array();
while($row=mysql\u fetch\u assoc($result)){
如果($row[“is_external”]){
$url=$row[“url”];
}else if(空($row[“is_external”])){
$url=get_page_url($row[“page_id”]);
}
$menu[]=数组(“名称”=>$row[“名称”],“页面id”=>$row[“页面id”],“是外部”=>$row[“url”],“url”=>$url);
}
返回$menu;
}
静态函数get\u page\u url($page\u id)
{
$result=mysql_query(“从id='$page_id''的页面中选择view_id”);
$result=mysql\u fetch\u assoc($result);
$view_id=$result[“view_id”];
$result=mysql_query(“从视图中选择listen_path,其中id='$view_id');
$result=mysql\u fetch\u assoc($result);
$listen_path=$result[“listen_path”];
返回$listen_path;
}
静态函数render()
{
$result=mysql_查询(“从菜单中选择*);?>

您只检查函数build_menu()中的外部链接,但该函数不会在render()函数的任何位置调用


render()函数只调用get_page_url(),它不区分内部链接和外部链接。

外部url的Href参数必须以协议声明开头,因此在您的示例中以“http://”开头

因此,在函数“build_menu”中更改代码的条件,如果URL是外部的,则向其添加“http://”,类似于以下内容:


$url='http://'.$row[“url”];

过了一段时间,我让它开始工作了

我只是在render函数中创建了一个If-else语句

static function render(){
    $menu_items = self::get();
    ?><div class="menu"><ul><?php while ($item = mysql_fetch_assoc($menu_items)) { ?>
            <li><a href="<?php

                if(empty($item["is_external"]))
                {
                    echo self::get_page_url($item["page_id"]);
                }

                else if($item["is_external"] = 1)
                {
                    echo $item["url"];
                }

                 ?>"><?php echo $item["name"] ?></a>
            </li>                <?php } ?></ul></div><?php
}
静态函数render(){
$menu_items=self::get();
?>

查看源代码,显示的是菜单
  • //这应该是
  • 支持
      我假设
      self::get\u page\u url
      是框架的一种方法(?)您使用的是仅获取内部页面的URL–因此,在调用该方法之前,您必须检查
      $item[“page\u id”]
      是否为外部URL–并且仅在外部URL为的情况下调用该方法。但是在我的数据库中,外部URL也有一个page\u id,因此我认为它可以工作,但我猜不是。哦,这是我们的.umbraco.org/“>@Dagon:这是非常有效的HTML–它对于应该链接到哪里没有多大意义。(而且,由于SO的自动链接机制,它似乎只以这种方式显示在这里,实际上是
      )在数据库中,它有http://so,当它被打印或回显时应该是正确的:)哦,我明白了,它被so隐藏了。那有什么问题吗?它根本不显示外部链接?是的,它不显示任何外部链接。它只是使a href标记为null:/我认为数据中可能有混乱。那么您想如何使用build_menu()在渲染函数中?我也不知道。为什么你粘贴了根本没有使用的函数
      build_menu
      ?我只是不知道如何使用它。我用它尝试了很多东西,都记不起来了,然后我直接尝试了get_页面的url
      static function render(){
          $menu_items = self::get();
          ?><div class="menu"><ul><?php while ($item = mysql_fetch_assoc($menu_items)) { ?>
                  <li><a href="<?php
      
                      if(empty($item["is_external"]))
                      {
                          echo self::get_page_url($item["page_id"]);
                      }
      
                      else if($item["is_external"] = 1)
                      {
                          echo $item["url"];
                      }
      
                       ?>"><?php echo $item["name"] ?></a>
                  </li>                <?php } ?></ul></div><?php
      }