Меню навигации как у Лебедева

pavlodaranet

Новичок
Меню навигации как у Лебедева

Привязался к фразе Лебедева "ничто не должно содержать ссылку на самого себя" и решил сделать меню исходя из такого правила.

В общем имеется таблица settings:

id | page | title
0 | / | главная страница
1 |/news/ | новости

Делаю следующее:

PHP:
$_SERVER['REQUEST_URI'];
Затем как я понимаю надо проверять значение текущей страницы с содержимым базы...
Возник небольшой ступор на этом моменте, кто может подсказать, как дальше действовать?
 

pavlodaranet

Новичок
хочу создать навигацию, не содержащую ссылку на ту страницу которая открыта
 

x-yuri

Новичок
а вообще надо сравнивать, например, $_SERVER['REQUEST_URI'] с uri пункта меню, причем с учетом того, что пользователь мог как минимум указать/не указать в конце слеш

-~{}~ 08.01.09 09:14:

хочу создать навигацию, не содержащую ссылку на ту страницу которая открыта
это понятно. Что твой код делает? Непонятно зачем ты его привел? Или ты имеешь в виду, что переменную ты нашел, а что с ней дальше делать непонятно?
 

pavlodaranet

Новичок
да

-~{}~ 08.01.09 16:56:

В общем есть такой не до конца готовый код:

PHP:
$result = mysql_query("SELECT * FROM settings");
while ($pagerow[] = mysql_fetch_array($result)) ;
		for($i = 0; $i < 4; $i++)   // 4 необходимо заменить на кол-во записей в БД
			{   
				if ($_SERVER['REQUEST_URI']==$pagerow[$i]["page"])
					{
						echo $pagerow[$i]["title"]."&nbsp;";
					}
				else echo "<a href='".$_SERVER['SERVER_NAME']."'>".$pagerow[$i]["title"]."</a>&nbsp;"; //необходимо сделать правильные ссылки
			}
в итоге теперь надо посчитать кол-во записей в БД и правильно сформировать ссылки
 

Фанат

oncle terrible
Команда форума
жесть
то есть, я понимаю, что записей в сеттингс мало
но все равно, выборка из базы методом селект * фром не перестает меня убивать насмерть.

павлодарнет, ты вообще слышал когда-нибудь о базах данных? о том, что они умеют манипулировать этими данными? и сами выбирать нужные?
 

pavlodaranet

Новичок
хм. а подробнее?

-~{}~ 08.01.09 17:43:

Получилось вот так:
PHP:
// навигация 
$kol=mysql_fetch_assoc(mysql_query("SELECT count(*)  as cnt  FROM settings"));
//echo $kol['cnt'];
$result = mysql_query("SELECT page, title FROM settings");
while ($pagerow[] = mysql_fetch_array($result)) ;

		for($i = 0; $i < $kol['cnt']; $i++)   
			{   
				if ($_SERVER['REQUEST_URI']==$pagerow[$i]["page"])
					{
						echo $pagerow[$i]["title"]."&nbsp;";
					}
				else echo "<a href='http://".$_SERVER['SERVER_NAME'].$pagerow[$i]["page"]."'>".$pagerow[$i]["title"]."</a>&nbsp;"; 
			}
Сказали что можно использовать mysql_num_rows дабы избавиться от двойной выборки.
 

Фанат

oncle terrible
Команда форума
выбирать надо только те данные, которые нужны.
если же ты не умеешь пользоваться базой данных, и используешь её на манер текстового файла, то ни не надо ей пользоваться.
 

pavlodaranet

Новичок
не ошибается тот, кто ничего не делает. думаю, ваши советы намного полезнее ваших упреков.
 

Фанат

oncle terrible
Команда форума
а ты не расценивай это как упрек, а расценивай как совет.
и не говори, что никогда не видел в запросах оператор WHERE
 

Денч

Новичок
pavlodaranet
Ттыщу раз да. ***** (ну ты понял кто за звездочками спрятался:) ) совершенно верно сделал замечание по поводу оператора WHERE.
От себя добавлю - при UPDATE-запросах не знать/забывать про оператор WHERE иногда смерти подобно :)
 

x-yuri

Новичок
зачем ты делаешь подсчет количества пунктов меню отдельным запросом: у тебя каждому пункту меню соответствует один элемент массива ;-)
 
Сверху