|
автор: Timour (17.12.2004 в 11:45) |
|
| Всем привет....
есть меню, ссылки которого на странице генерятся из БД следующим образом:
printf("<a class=normal href=link.php?id=%s>%s</a><br>"
,$Rows['url'],$Rows['title']);
|
вопрос такой....
как мне выделить строку с сылкой, просматриваемой страницы?
Пробовал делать так:
$request = $_GET['id'];
if (strstr($_SERVER['QUERY_STRING'], $request))
{
print("<a class=active>$request</a><br>");
|
но в этом случае все ссылки становились class=active
хотелось, чтобы только одна становилась active, а остальные normal...
менять код на каждой странице - не выход (страниц более 200)
Буду благодарен любым предложениям. | |
|
|
|
|
|
|
|
для: Timour
(17.12.2004 в 11:45)
| | Хм... наверное лучше явно сравнить значение $_GET['id'] и $Rows['url'] при формировании ссылок:
<?php
if($_GET['id'] == $Rows['url']) $link_style = "active";
else $link_style = "normal";
printf("<a class=$link_style href=link.php?id=%s>%s</a><br>"
,$Rows['url'],$Rows['title']);
?>
|
| |
|
|
|
|
|
|
|
для: Timour
(17.12.2004 в 11:45)
| | Вот такой способ есть
<?
// В качестве параметра функция stylemenu принимает переменную $activemenu.
// Если переменная инициализирована, то функция возвращает строку class = active.
// Для неинициализированных переменных будет возвращена строка class = normal (не активные пункты меню).
function stylemenu($activemenu){
if (isset($activemenu)){
return " class=active ";
} else {
return " class=notactive ";
}
}
$id_menu = $_GET['id'];
// Динамическое создние переменной,
eval("\$active$id_menu = 1;");
echo ("<a ".stylemenu($active1)">Ссылка раз</a><br>");
echo ("<a ".stylemenu($active2)">Ссылка два</a><br>");
echo ("<a ".stylemenu($active3)">Ссылка три</a><br>");
?>
|
Переменная выбранного пункта меню инициализируется при помощи функции eval.
eval("\$active$id_menu = 1;");
| К примеру, для третьего пункта ($id_menu = 3) меню эта конструкция инициализирует переменную $active3 = 1; Переменные для других пунктов останутся не инициализированными.
В каждом пункте меню для динамического определения стиля вызываем функцию stylemenu.
<a <? echo stylemenu($active1) ?>> href="page1.php"></a></br>
| Функция stylemenu проверяет: инициализирована ли переменная и в зависимости от этого определяет стиль.
id_menu - это в вашем коде будет равно $_GET['id']
А так как меню формируется из базы, то Вы сможете динамически формировать строки
<?
echo ("<a ".stylemenu($active1)">Ссылка раз</a><br>");
echo ("<a ".stylemenu($active2)">Ссылка два</a><br>");
echo ("<a ".stylemenu($active3)">Ссылка три</a><br>");
?>
|
| |
|
|
|
|
|
|
|
для: glsv (Дизайнер)
(17.12.2004 в 12:49)
| | Попробовал и первый вариант и второй -- оба не удачно :((
в первом случае:
или выдавал это: unexpected T_VARIABLE на такой-то строчке (а именно $link_style), или вообще не выводил список...
во-втором случае:
или unexpected T_FUNCTION, если функцию вставлял в тот же или unexpected T_VARIABLE, если писал отдельно, т.е. <?php function ........ ?>
вот :(( | |
|
|
|
|
|
|
|
для: Timour
(17.12.2004 в 17:01)
| | Должны работать и первый и второй способы. И способ, приведенный cheops-ом, мне больше по душе. Если приложите свой код, то поможем его отладить. | |
|
|
|
|
автор: Тимур (20.12.2004 в 20:39) |
|
|
для: glsv (Дизайнер)
(18.12.2004 в 00:20)
| | Блин, забыл свой пароль от форума.....
Мне тоже больше понравился вариант Cheops'a...
вот код моей страницы...
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<style type="text/css"><!--
a.active {font-weight: bold; color: #9999FF;}
a.normal {color: green;}--></style>
<? include("top.html");?>
<table width="100%" cellpadding="0" cellspacing="0" border="0">
<tr valign="top"><td width="190">
<?php
$DBName = "db_podm";
$Link = mysql_connect(localhost, "%");
mysql_select_db($DBName, $Link);
$Query = "SELECT * FROM podm_objects ORDER BY title";
$Result = mysql_query($Query, $Link);
while($Rows = mysql_fetch_array($Result, MYSQL_ASSOC))
{
printf("<a href=podm.php?id=%s>%s</a><br>", $Rows['url'] ,$Rows['title']);
}
mysql_close($Link);
?>
</td>
<td><?php
$DBName = "db_podm";
$Link = mysql_connect(localhost, "%");
mysql_select_db($DBName, $Link);
$request = $_GET['id'];
$Query = "SELECT * FROM podm_objects WHERE url = '$request'";
$Result = mysql_query($Query, $Link);
while($Rows = mysql_fetch_array($Result, MYSQL_ASSOC))
{
printf("<table width=\"100%%\" border=0 cellpadding=0 cellspacing=0><tr class=\"name\"><td width=60%% align=\"left\">%s</td><td width=40%% align=\"right\">%s</td></tr></table>
Расположен: %s<br>
Условия размещения: %s<br>
К услугам отдыхающих: %s<br>
Лечение: %s<br>
Лечебная база: %s<br>
В стоимость входит: %s<br>
Питание: %s<br>
Скидки: %s<br>
Примечание: %s<br>
Проезд: <ul>%s</ul>"
,$Rows['name'],$Rows['address'],$Rows['rasp'],$Rows['razm'],$Rows['uslug'],$Rows['med'],$Rows['med_base'],$Rows['incl'],$Rows['food'],$Rows['sales'],$Rows['memo'],$Rows['proezd']);
}
mysql_close($Link);
?>
</td></tr></table>
|
меню генерится в левом (первом) столбце | |
|
|
|
|
|
|
|
для: Тимур
(20.12.2004 в 20:39)
| | Обновите блок кода, выводящий ссылки.
<?
while($Rows = mysql_fetch_array($Result, MYSQL_ASSOC))
{
if($_GET['id'] == $Rows['url']) $link_style = "active";
else $link_style = "normal";
printf("<a class=$link_style href=podm.php?id=%s>%s</a><br>", $Rows['url'] , $Rows['title']);
}
?>
|
| |
|
|
|
|
автор: Тимур (22.12.2004 в 17:20) |
|
|
для: glsv (Дизайнер)
(20.12.2004 в 23:06)
| | не работает...
думаю, что надо в php.ini покопаться
:(( | |
|
|
|
|
|
|
|
для: Тимур
(22.12.2004 в 17:20)
| | Хм, странно... Я протестировал на своей базе. Все работало.
Ошибки те же самые?
А прикрепите свой php.ini - повозимся дальше. | |
|
|
|
|
|
|
|
для: Тимур
(20.12.2004 в 20:39)
| | >Блин, забыл свой пароль от форума.....
Вам выслать по почте? | |
|
|
|
|
автор: Тимур (23.12.2004 в 15:56) |
|
|
для: Тимур
(20.12.2004 в 20:39)
| | с php.ini - есть проблемка.... думаю, что его нет вообще... пробовал искать его на дисках, никакого результата. нет такого файла и всё... надо бы его из портов вытащить и прописать .conf файлах... Есть мысль, что после этого заработает всё само собой...
а вот пароль хотелось бы восстановить... :) | |
|
|
|
|
автор: Тимур (23.12.2004 в 16:42) |
|
|
для: Тимур
(20.12.2004 в 20:39)
| | всё заработало....
как я и думал, всё дело было в php.ini
а пароль я всё ещё жду :))) | |
|
|
|
|
|
|
|
для: Тимур
(23.12.2004 в 16:42)
| | >а пароль я всё ещё жду :)))
Выслал. | |
|
|
|
|
|
|
|
для: Тимур
(20.12.2004 в 20:39)
| | пароль получил, спасибо | |
|
|
|