PHP "динамическое" меню - PullRequest
1 голос
/ 25 июля 2010

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

При запуске я получаю сообщение об ошибке.Ошибка:

Ошибка разбора: синтаксическая ошибка, неожиданный T_VARIABLE в /home/s0urc3/public_html/files01/menu.php в строке 5

Благодаря Чейз за ответ

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

Спасибо Погоня за его повторный сценарий

Ответы [ 3 ]

1 голос
/ 25 июля 2010

Позвольте мне сказать, что я не слишком знаком с 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, который был создан именно для этой цели:

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

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

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

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

// Now you can do:
printMenu(array("url1", "url2", "url3"));
0 голосов
/ 08 сентября 2010

Хорошо, так что я просмотрел код, который так щедро предоставил Chase, решил мою проблему.: D

это код и menu.php, и index.php

Menu.php:

<!--
PHP menu by ellisgeek
$email = 'ellisgeek@gmail.com';
$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'ов не стесняются копировать и вставлять, просто не удаляйте комментарий к кредиту.

0 голосов
/ 25 июля 2010
<?

$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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...