Php 用MySQL创建的菜单只能在网站内部工作,不能在网站外部工作
我希望有人能帮助我,因为我有一个菜单,是通过我的MySQL数据库自动生成的 因为我得到了在网站内部工作的菜单,我的意思是它与“test.dk/about”一起工作,但是当它像“”一样离开网站时,a href是空的 顺便说一句,这只是一个非常简单的UL LI菜单,没有下拉菜单或其他什么 这是我的剧本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
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
}