Страница без ссылки на саму себя

John2

Guest
Страница без ссылки на саму себя

Приветствую всех!
1. В php я чайник.
2. По форуму долго искал, похожего ничего не нашел.
3. От php мне нужно только меню, надеюсь поможите.

Итак, то что я имею:
PHP:
<?
$navi = array (
'/'=>'Главная',
'/abaut/'=>'О компании',
'/production/'=>'Продукция',
'/sitemap/'=>'Карта сайта'
);
foreach ($navi as $key => $value) {
if ($REQUEST_URI=="$key")
echo "$value";
else
echo "<a href='$key'>$value</a>";
} 
?>
Тут всё понятно, маленькое меню, если
PHP:
$REQUEST_URI=="$key"
то ссылка не активна.

Что требуется:
Допустим посетитель нажимает на ссылку "Продукция"
Появляется подменю
Собственно смысл в том, чтобы:
1. Оно появлялось :)
2. И чтобы ссылка меню была неактивна, когда пользователь находится на страничке этого пункта (как собственно сделано в главном меню)
При добавление цикла внутрь цикла у меня получается.....тоесть не получается.
Кто понял что я имею ввиду прозьба помочь.
 

Demiurg

Guest
>При добавление цикла внутрь цикла у меня получается.....тоесть не получается.
конкретнее, что не получается ?
 

John2

Guest
Может я просто неправильно добавляю цикл внутрь цикла, что я делаю:
PHP:
<?
$navi = array (
'/'=>'Главная',
'/about/'=>'О компании',
'/production/'=>'Продукция',
'/sitemap/'=>'Карта сайта'
);
$navi2 = array (
'/production/tables/'=>'Столы',
'/production/chairs/'=>'Стулья'
);
foreach ($navi as $key => $value) {
if ($REQUEST_URI=="$key")
echo "$value"

	foreach ($navi2 as $key2 => $value2) {
	if ($REQUEST_URI=="$key2")
	echo "$value2";
	else
	echo "<a href='$key2'>$value2</a>";
	} 

;
else
echo "<a href='$key'>$value</a>";
} 
?>
т.е. делаю отдельный массив для меню "Продукция".
И вставляю цикл в цикл.
Пишет что ошибка в строке
PHP:
foreach ($navi2 as $key2 => $value2) {
 

Demiurg

Guest
конечно ошибка, у тебя нет точки с запятой после echo.
синтаксис хотя бы знать стоит.
 

John2

Guest
точка с запятой есть (4-ая строка снизу), только если я её ставлю после
PHP:
echo "$value"
суть от этого не меняется, т.к. всёравно выдаёт ошибку в строке с
PHP:
else
.
Мозможно дело не в точке с запятой, а то что я изначально не так делаю и есть другой способ? или нет!?
 

Demiurg

Guest
John2
способов много, но что бы что-то делать, надо понимать что ты делаешь. Ты пока не понимаешь. Так что дальше вего 2 варианта:
1. ты хочешь разобраться и сделать сам
2. ты хочешь, что бы сделали за тебя

выбирай.
 

phobos

Новичок
бред...
учи синтаксис...начни с if..else
вот линк непременно почитай
http://www.hot.ee/phobostmp/4beginnerz.rar
 

John2

Guest
Я просто хочу чтобы мне помогли, подсказали.
Если так угодно, то "сделали за теня".
Собственно думаю для человека кто хоть немного понимает в php подсказать то что я прошу минутное дало (желательно на примере).
я не програмист и сказал это сразу.
если сложно помочь, так и скажити.
 

SelenIT

IT-лунатик :)
Точку с запятой переставить, фигурные скобки добавить (блок от if до else).

-~{}~ 20.08.05 23:56:

PHP:
...
if (strpos($_SERVER['REQUEST_URI'],$key)!==false) {
    echo "$value";

    foreach ($navi2 as $key2 => $value2) {
        if ($_SERVER['REQUEST_URI']==$key2)
            echo "$value2";
        else
            echo "<a href='$key2'>$value2</a>";
    }
}
else ...
P.S. Если переменная равна '/production/' - она не может быть равна '/production/chairs/'. Чтобы проверить вхождение подстроки '/production/' в URL, нужно использовать любую подходящую строковую функцию.
P.P.S. На всякий случай: PHP FAQ: Не передаются переменные! Проблема register_globals.
 

John2

Guest
Имею такой код:
PHP:
<? 
$navi1 = array (
'/tables/'=>'Столы',
'/chairs/'=>'Стулья'
); 

$navi2 = array ( 
'/tables/tables1/'=>'Столы1',
'/tables/tables2/'=>'Столы2',

'/chairs/chairs1/'=>'Стулья1',
'/chairs/chairs2/'=>'Стулья2'
);

foreach ($navi1 as $k1 => $v1) { 
if (strpos($_SERVER['REQUEST_URI'],$k1)!==false) { 
    echo "$v1<br>"; 


	foreach ($navi2 as $k2 => $v2) { 
	$pos = strpos($k2, $k1);
							
		if ($pos !== false) {
			
			if (strpos($_SERVER['REQUEST_URI'],$k2)!==false) {
			echo "$v2<br>"; 
			} else {
			echo "<a href='$k2'>$v2<br></a>";
			}
			
		} else {}
		
	} 


} 
else
{ 
  echo "<a href='$k1'>$v1<br></a>"; 
} 
} 
?>
Тема такая, перед выводом второго цикла я проверяю юрл на наличие в нём открытого меню, с помощью
$pos
, тоесть всё получается правильно в столах появляются только столы, в стульях стулья.
Всё, да не всё.
Т.к. когда и хожу по подпунктам 'столы1', 'столы2', корневой раздел 'столы' тоже активен.
И это вродебы понятно почему, т.к. в строке

if (strpos($_SERVER['REQUEST_URI'],$k1)!==false) {

проверяется ниличие в строке /tables/, а остальное не важно.
Если же заменить строку на

$_SERVER['REQUEST_URI']==$k1

то подпункты не будут открыватся, тут тоже ясно почему.
Вот только не ясно мне как в такой ситуации поступить.
Кто знает прозьба, подсказать.
 
Сверху