2010-07-24 3 views
1

Я только начинаю PHP (как и сегодня). Я хочу создать настраиваемое меню, используя скрипт jquery, который может иметь переменное количество элементов.PHP "dynamic" Menu

Я получаю сообщение об ошибке, когда я запускаю это. Ошибка:

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

Не говорите «спасибо Чейзу», но принимайте и выдвигайте его ответ - действия говорят громче, чем слова, особенно на носителе, который имеет функциональность, чтобы вознаграждать пользователей, когда их ответ принят. – Jasper

+0

Я бы, но я еще не решил проблему. – ellisgeek

ответ

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>"; 
} 
?> 

Index.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> 

это написать меню, используя мкл и несколько 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; 
} 

Если вам интересно, как это работает, всмотреться и иметь в виду, что у меня есть только одно заявление перерыв , Это просто сложнее понять и менее понятно, но это просто не рекомендуется. Однако, как единственное, что меняется каждый раз, когда это число, вы можете использовать для петлю, которая была сделана специально для этой цели:

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

Теперь вы видите, что намного короче и проще, но очень ясный.

Редактировать: Мне не хватает одной вещи: длинной строки URL-адресов у вас там. Одна вещь, которую нужно узнать, когда вы программируете, - это сохранить некоторые опрятные пробелы, едва ли понятно, что мы говорим о функции здесь. Взгляните на мой код и ваш ... мой читабельный, в то время как у вас нет, и все это из-за пробела, который я вставил, а вы этого не сделали ... Во всяком случае, вы, вероятно, можете использовать массив:

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>