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

pavlodaranet

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

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

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

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

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

PHP:
$_SERVER['REQUEST_URI'];

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

-~{}~ 08.01.09 09:14:

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

-~{}~ 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;"; //необходимо сделать правильные ссылки
			}

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

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

-~{}~ 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 дабы избавиться от двойной выборки.
 
выбирать надо только те данные, которые нужны.
если же ты не умеешь пользоваться базой данных, и используешь её на манер текстового файла, то ни не надо ей пользоваться.
 
не ошибается тот, кто ничего не делает. думаю, ваши советы намного полезнее ваших упреков.
 
а ты не расценивай это как упрек, а расценивай как совет.
и не говори, что никогда не видел в запросах оператор WHERE
 
pavlodaranet
Ттыщу раз да. ***** (ну ты понял кто за звездочками спрятался:) ) совершенно верно сделал замечание по поводу оператора WHERE.
От себя добавлю - при UPDATE-запросах не знать/забывать про оператор WHERE иногда смерти подобно :)
 
зачем ты делаешь подсчет количества пунктов меню отдельным запросом: у тебя каждому пункту меню соответствует один элемент массива ;-)
 
Сверху