Формирование пройденного пути по сайту

  • Автор темы Nicolas Prof
  • Дата начала

Romantik

TeaM PHPClub
Легко говорить посмотри. Очень сложно разбирать чужой код, тем более движки для форумов, где сполшные includе'и и все черт знает как работает.
анализируя чужой код можно много нового для себя открыть =)
 

crocodile2u

http://vbolshov.org.ru
Nicolas Prof:

Сложно с тобой говорить... То ты говоришь одно, то совершенно противоположное...

Задача проста: есть структура страниц (меню). У каждой страницы есть свой родитель. Для каждой страницы находишь ее родителя, потом родителя родителя и т. д. Вот тебе и нужная цепочка.
 

Nicolas Prof

Guest
crocodile2u
Сложно с тобой говорить...
Согласен есть такое но что поделаешь... (


Romantik
Разбор кода форума вообще не будет полезен. Так как у них все завязано на СУБД. Я же использовать ее не собираюсь.

На мой взгляд пока есть лишь одно решение. Которые я уже предлагал, а его никто так и не прокоментировал ))

Значит есть собственно будущая строка, пока она пустая. Стартует страница. По мере выполнения кода, интерпретатор напаривается на такую строку
PHP:
$path="<img ...><a href=index.php>Главная</a>"
Теперь же пользователь начал куда-то передвигаться по сайту. К примеру в раздел download. Нажимает по ссылке <a href=index.php?id=download>Закачки</a>
И начинает опять интерпритатор бежать по коду:
Сначала он увидит уже знакомую строку
PHP:
$path="<img ...><a href=index.php>Главная</a>"
но еще, он теперь увидит вот что:
PHP:
$path.="<img ...><a href=index.php?id=download>Закачки</a>"
И конечно же все время в конце выполнения всего кода есть такая строка
PHP:
print "$path";
Недостатки:
!!!Результирующий путь отображается внизу!!!
Плюсы:
Наконец-то реализую эту бредовую идею )))

Если все же это нормальное решение, можно ли как-то сделать чтобы строка была ВВЕРХУ.

У меня была одна идея через div и z-index сделать, но все же хочеться без javascript обойтись...
 

SelenIT

IT-лунатик :)
Теперь же пользователь начал куда-то передвигаться по сайту. К примеру в раздел download. Нажимает по ссылке <a href=index.php?id=download>Закачки</a>
И начинает опять интерпритатор бежать по коду...
Ой, боюсь нечаянно обидеть и сам хотел бы в этом ошибаться, но кое-что в этой схеме наводит на грустные мысли про PHP FAQ: Самые основы. Отличие веб-приложения от обычной программы...
 

crocodile2u

http://vbolshov.org.ru
SelenIT: Ты прав. Однозначно. Остается только надеяться, что пациент операбелен.
 

Nicolas Prof

Guest
SelenIT
crocodile2u
Ну вы народ даете. Что за дурака держите? ))
Я же образно рассказал процесс генерации при КАЖДОМ НОВОМ запросе. Вам хочешь как можно подробнее а вы ищете где бы придраться.

Вот к примеру ОГРОМНОЕ спасибо Yaponchick за скрипт. Все же он не для моего случая. Но на вооружение, на будущее я его возьму.

Yaponchick
У меня не такая иерархия папок. Точнее ее вообще нет. Названия php файлов, это вся моя иерархия. А каждый php скрипт может генерировать до 5 страниц.

В прочем я решил эту задачу как написано выше. Вот привожу примеры. Вот теперь можно ругать ))
index.php
PHP:
//Аутентификация
require_once ("./defender/defender.php");

//Подключаем язык выбранный пользователем на данную сессию
require_once ("./lib/lang/".$_SESSION['lang']."/main.lib.php");

//Путь по умолчанию
$path="<img src='./images/pic/home.gif' align='absmiddle'><a class='bodylink' href='index.php'>".$lang['главная']."</a>";

//Разбираем переменные полученные методом GET, POST
if (isset($_REQUEST['id'])){
	switch ($_REQUEST['id']){
		//Запрос на отображение дисциплин
		case "disc":{
			//Переменная пути
			$path.="<img src='./images/arrow_right.gif' align='absmiddle'><img src='./images/pic/library.gif' align='absmiddle'><a class='bodylink' href='index.php?id=disc&code=no'>".$lang['дисциплины']."</a>";
				
				//Дисциплины
				//20 - Теория надежности
				if ($_REQUEST['code']==20){
					//Переменная пути
					$path.="<img src='./images/arrow_right.gif' align='absmiddle'><img src='./images/pic/subject.gif' align='absmiddle'><a class='bodylink' href='index.php?id=code20'>".$lang['теория_надежности']."</a>";
					require_once ("./subject/20/inc/header.inc.php");
					require_once ("./subject/20/inc/links.inc.php");
					require_once ("./subject/20/inc/footer.inc.php");
				}
				else{
					require_once ("./inc/header.inc.php");
					require_once ("./inc/links.inc.php");
					//Подключение шаблона отвечающего за Дисциплины
					require_once ("./inc/disc.inc.php");
					require_once ("./inc/footer.inc.php");
			}
			$notdefault=true;
			break;
		}
		
		//Запрос на отображение Файлов Системы для закачки
		case "files":{
			//Переменная пути
			$path.="<img src='./images/arrow_right.gif' align='absmiddle'><img src='./images/pic/files.gif' align='absmiddle'><a class='bodylink' href='index.php?id=files'>".$lang['файлы']."</a>";
			require_once ("./inc/header.inc.php");
			require_once ("./inc/links.inc.php");
			//Подключение Модуля ДеФАЙЛЕР
			require_once ("./defiler/defiler.php");
			require_once ("./inc/footer.inc.php");
			$notdefault=true;
			break;
		}
		
		case "code20":{

			$notdefault=true;
			break;
		}
	}
}
//Формирование страницы по умолчанию
//Чтобы этот блок не выполнился достаточно где - угодно определить переменную $notdefault
if (!isset($notdefault)){
	require_once ("./inc/header.inc.php");
	require_once ("./inc/links.inc.php");
	require_once ("./inc/footer.inc.php");
}
?>
Я мог бы выложить еще кода подключаемых скриптов но нужно ли ))
 

MANiac

Новичок
помоему в твоем случае кроме как свич-кейс никак не придумаешь.

А форум работает очень легко:
название форума(всего) - название конкретного форума (из бд) - названия топика (из бд)... № форума и топика передаеться по гету... Тут точно не уверен, но в пхпбб именно так...
 

crocodile2u

http://vbolshov.org.ru
Учиться, учиться и еще раз учиться...

>>> $_REQUEST['code']==20

1. Зачем использовать $_REQUEST?
2. Почему ты так уверен, что юзер пришлет тебе какой-то 'code'?
3. Откуда взялось число 20?
4. Если таких чисел будет потенциально больше одного - будешь на каждое число писать elseif { ... } ?

Я уже не говорю о том, что если спустя полгода придется вновь вернуться к этим скриптам, тебе придется несладко - придется вспоминать, зачем нуна какая-то $notdefault, зачем в коде то и дело встречаются какие-то добавки к переменной $path...

И еще - оператор switch предоставляет уникальную возможность избавиться напрочь от этой нелепой $notdefault - там есть такая штука, как default: ...your code here.. break;
 
Сверху