2010-07-24 95 views
1

我刚刚开始PHP(如今天)。 我想创建一个可定制的菜单使用jquery脚本,可以有一个可变数量的项目。PHP“动态”菜单

我收到一个错误,当我运行这个。 错误是:

Parse error: syntax error, unexpected T_VARIABLE in /home/s0urc3/public_html/files01/menu.php on line 5

由于Chase他的回答

的index.php:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 
<head> 
<?PHP 
$script_url="http://files01.s0urc3.ismywebsite.com/jquery/nagging-menu/nagging-menu.js"; 
$menu_css="http://files01.s0urc3.ismywebsite.com/jquery/nagging-menu/style.css"; 
$links = array(
    array("url" => "http://www.something1.com", "label" => "something"), 
    array("url" => "http://www.something2.com", "label" => "something2"), 
    array("url" => "http://www.something3.com", "label" => "something3"), 
); 
include("menu.php"); 
?> 
<meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1"/> 
<title></title> 
<link rel="shortcut icon" href="favicon.ico" type="image/x-icon"/> 
<link rel="stylesheet" type="text/css" href=".css"/> 
</head> 
<body> 
<?=writeMenu($links, $menu_css, $script_url)?> 
</body> 
</html> 

menu.php:

<? 
function writeMenu($links, $script_url, $menu_css){ 
$menu = '<link href=\"$menu_css\" type=\"text/css\">' 
    $menu = '<div id="navi">'; 
    $menu .= '<div id="menu" class="default">'; 
    $menu .= '<ul>'; 

    foreach ($links as $item) { 
     $menu .= "<li><a href=\"".$item['url']."\">".$item['label']."</a></li>"; 
    } 

    $menu .= "</ul>"; 
    $menu .= "</div>"; 
    $menu .= "<script type=\"text/javascript\" src=\"http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js\" charset=\"utf-8\"></script>"; 
    $menu .= "<script type=\"text/javascript\" src=$script_url charset=\"utf-8\"></script>"; 

    return $menu; 
} 
?> 

感谢Chase为他的脚本

+1

不要只说“谢谢Chase”,而是接受并赞扬他的回答 - 行动胜于言语,尤其是在具有在接受答案时奖励用户的功能的媒介。 – Jasper 2010-08-25 21:44:33

+0

我会,但我还没有解决这个问题。 – ellisgeek 2010-09-01 20:02:30

回答

0

好吧,于是我查看了由追逐提供的慷慨提供的代码,解决了我自己的问题。 :d

这里既是menu.php的代码和index.php文件

Menu.php:

<!-- 
PHP menu by ellisgeek 
$email = '[email protected]'; 
$URL = 'http://s0urc3.ismywebsite.com' 
Original code by chase on StackOverflow.com 
--> 
<? 
function writeMenu($links, $css){ 
echo '<link rel="stylesheet" type="text/css" href="$css" media="screen"/>'; 
echo '<div id="navi"><div id="menu" class="fixed"><ul class=""> '; 


foreach ($links as $item) { 
    echo "<li><a href=".$item['url'].">".$item['label']."</a></li>"; 
} 

echo "</ul>"; 
echo "</div>"; 
echo "</div>"; 
} 
?> 

指数。PHP:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 
<head> 
<? 
$css="style.css"; 
$links = array(
    array("url" => "http://www.something1.com", "label" => "something"), 
    array("url" => "http://www.something2.com", "label" => "something2"), 
    array("url" => "http://www.something3.com", "label" => "something3"), 
); 
include("menu.php"); 
?> 
<meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1"/> 
<title></title> 
<link rel="shortcut icon" href="favicon.ico" type="image/x-icon"/> 
<link rel="stylesheet" type="text/css" href=".css"/> 
</head> 
<body> 
<?=writeMenu($links, $menu_css, $script_url)?> 
<p>Lorum Lorum Lorum Lorum Lorum Lorum Lorum Lorum Lorum Lorum Lorum Lorum Lorum Lorum Lorum Lorum Lorum Lorum Lorum Lorum Lorum Lorum</p> 
<!--Add lotsa these--> 
</body> 
</html> 

这将使用UL写的菜单和几个div的随意复制粘贴ň只是不删除信用评论请。

1

让我说我不太熟悉jquery,所以我只会评论你的php的使用。

首先,你需要使用引号字符串像这样:print("<li><a href=$link_1_url>$link_1_label</a></li>")

于是就有了问题,为什么你正在使用这样的开关,然后复制同样的事情,并增加了一些。您可以轻松地做到这一点,如下所示:

if ($items >= 1) 
{ 
    // print line 1 
} 

if ($items >= 2) 
{ 
    // print line 2 
} 
if ($items >= 3) 
{ 
    // print line 3 
} 

这将确保您不必一遍又一遍地复制相同的东西。同样的事情可以用下面的开关来实现,但是这个代码是很难理解:

$out = ""; 
switch ($items) 
{ 
case 3: 
    $out = "line3" . $out; 
case 2: 
    $out = "line2" . $out; 
case 1: 
    $out = "line1" . $out; 
    print($out); 
    break; 
} 

如果你想知道如何工作的,好好看看,并记住,我只有一个break语句。虽然这很难理解,但不太清楚,所以不推荐。 然而,随着每次你改变的仅仅是一个数字,您可以使用for循环,这是只是此目的的:

for ($i = 0; $i < $items; $i++) 
{ 
    print("line " . $i); 
} 

现在你看,这是一个更简洁,更易,但非常清楚。

编辑:我错过了一件事:你在那里的长长的网址。在编程时学习的一件事就是保留一些整洁的空白,但我们在这里谈论的是一个函数,这一点很明显。看看我的代码和你的...我的是可读的,而你的不是,这一切都是由于我插入的空白,你没有......无论如何,你可能要使用一个数组:

function printMenu ($urls) 
{ 
    foreach ($urls as $url) 
    { 
     print("<a href='" . $url . "'>Link!</a>"); 
    } 
} 

// Now you can do: 
printMenu(array("url1", "url2", "url3")); 
0
<? 

$links = array(
    array("url" => "http://www.something1.com", "label" => "something"), 
    array("url" => "http://www.something2.com", "label" => "something2"), 
    array("url" => "http://www.something3.com", "label" => "something3"), 
); 


function writeMenu($links){ 

    $menu = '<div id="navi">'; 
    $menu .= '<div id="menu" class="default">'; 
    $menu .= '<ul>'; 

    foreach ($links as $item) { 
     $menu .= "<li><a href=\"".$item['url']."\">".$item['label']."</a></li>"; 
    } 

    $menu .= "</ul>"; 
    $menu .= "</div>"; 
    $menu .= "<script type=\"text/javascript\" src=\"http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js\" charset=\"utf-8\"></script>"; 
    $menu .= "<script type=\"text/javascript\" src=$script_url charset=\"utf-8\"></script>"; 

    return $menu; 
} 
?> 
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 3.2//EN"> 
<html> 
<head> 
    <meta name="generator" content="HTML Tidy for Mac OS X (vers 14 February 2006), see www.w3.org"> 
    <title></title> 
</head> 
<body> 
<?=writeMenu($links)?> 
</body> 
</html>