Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Менюшка
 
 автор: Hemp   (23.12.2004 в 10:43)   письмо автору
 
 

Есть файл, например adm1.php, с меню подобного вида:
<html><META HTTP-EQUIV=\"Content-Type\" CONTENT=\"text/html; charset=windows-1251\">
<link rel="stylesheet" href="c/f1.css" type="text/css"> 
<body>
.........
<div id="m2">&nbsp; Страница1</div>
<div id="m1"><a href="n.php">&nbsp;Страница2</a></div>
<div id="m1"><a href="p.php">&nbsp;Страница3</a></div>
<div id="m1"><a href="k.php">&nbsp;Страница4</a></div>
<div id="m1"><a href="e_m.php">&nbsp;Страница5</a></div>
.........
<?include('f/info_1.txt');?>

.........
<body></html>

id=m2 -- выбранная, активная страничка

Странички, почти, ничем не отличаються, друг от друга, кроме подключаемого файла 'f/info_XXX.txt'. На каждой страничке -- свой файл.

Теперь, о наболевшем...
Чего хочу добиться?

Используя, один файл adm1.php, добиться, при нажатии на любую ссылку меню, подключения соответствующего, ей файла 'f/info_XXX.txt'.
По умолчанию, должна быть активна, страничка "Страница1" и файл 'f/info_1.txt'.

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

   
 
 автор: Artem S.   (23.12.2004 в 12:18)   письмо автору
 
   для: Hemp   (23.12.2004 в 10:43)
 

>> Но, как, узнать, на какой, именно сейчас, в данный момент, странице, я нахожусь?
Используй параметр в адрессной строке (www.mysite.com/?page=home)

В начале файла index делаешь выбор оператором switch
<?
$page 
$_GET['page'];
switch (
$page)
{
case 
'home' : include('f/info_1.txt'); break;
case 
'page1': include('f/info_2.txt'); break;
......
default : include(
'f/info_1.txt');
}
?>

   
 
 автор: cheops (из ННГУ)   (23.12.2004 в 15:50)
 
   для: Hemp   (23.12.2004 в 10:43)
 

Имя текущей страницы можно узнать, обратившись к элементу суперглобального массива $_SERVER['PHP_SELF'].

   
 
 автор: Hemp   (24.12.2004 в 09:01)   письмо автору
 
   для: cheops (из ННГУ)   (23.12.2004 в 15:50)
 

cheops (из ННГУ)
Использать суперглобальный массив $_SERVER['PHP_SELF'], вот, так?
<div id="m1"><a href="<?$_SERVER['PHP_SELF']?>?page=inf">&nbsp;О фирме</a></div>
<div id="m1"><a href="<?$_SERVER['PHP_SELF']?>?page=nov">&nbsp;Новости</a></div>
<div id="m1"><a href="<?$_SERVER['PHP_SELF']?>?page=pr1">&nbsp;Продукция</a></div>
<div id="m1"><a href="<?$_SERVER['PHP_SELF']?>?page=pr2">&nbsp;Продукция1</a></div>
<div id="m1"><a href="<?$_SERVER['PHP_SELF']?>?page=kon">&nbsp;Контакты</a></div>


Artem S.
Спасибо! Получилось. Поставленная частная задача решена.

Теперь, ещё один вопрос.
Как, добиться того, чтобы, текущая "кнопочка", которая была, только, что нажата, отображалась, вот. так:
<div id="m2">&nbsp; Страница1</div>

Т.е, отличалась, от остальных в списке и была "неактивна" (не перерисовывала страницу, при повторном нажатии на неё)
А, все остальные, кнопочки, вот, так (меняю отображение блоков в таблице стилей):
<div id="m1"><a href="n.php">&nbsp;Страница2</a></div>

   
 
 автор: glsv (Дизайнер)   (24.12.2004 в 10:13)   письмо автору
 
   для: Hemp   (24.12.2004 в 09:01)
 

Попробуйте вот так:

<? 
function menu($href$title){ 
  if (
$_SERVER['PHP_SELF'] == "/".$href){ 
    return 
"<div id=m2><b>$title</b></div>"
  } else { 
    return 
"<div id=m1><a href=$href>$title</a></div>"
  } 


echo 
menu("n.php""О фирме");
echo 
menu("menu.php""Новости");
echo 
menu("k.php""Продукция");
echo 
menu("e_m.php""Контакты");
?>

   
 
 автор: Hemp   (24.12.2004 в 11:45)   письмо автору
 
   для: glsv (Дизайнер)   (24.12.2004 в 10:13)
 

Неправильно поставлен вопрос -- неправильно получен ответ.
Нажатая ссылка должна выглядеть, вот, так:
<div id="m2">&nbsp; Новости</div>

а, остальные, вот, так (пляшем от глобального массива $_GET['page']):
<div id=m1><a href=adm1.php?page=kon>Контакты</a></div>


Добился, этого следующей переделкой функции menu:
<? 
function menu($href,$title){ 
  if (
$_GET['page']==$href){ 
    return 
"<div id=m2>$title</div>"
  } else { 
    return 
"<div id=m1><a href=adm1.php?page=$href>$title</a></div>"
  } 


echo 
menu('inf'"О фирме"); 
echo 
menu('nov'"Новости"); 
echo 
menu('pr1'"Продукция"); 
echo 
menu('pr2'"Продукция1"); 
echo 
menu('kon'"Контакты"); 
?>

Как, в этой функции, где возвращается значение ссылки
"<div id=m1><a href=adm1.php?page=$href>$title</a></div>"

вместо adm1.php использовать глобальный массив $_SERVER['PHP_SELF']?
У, меня не получилось, его, просто, так подставить. Синтаксическая ошибка.
Дизайнер
Спасибо большое за функцию.
В, вашем варианте функции, в условии
$_SERVER['PHP_SELF'] == "/".$href

не могу, понять символы : "/".
Объясните, если не трудно.

   
 
 автор: glsv (Дизайнер)   (24.12.2004 в 12:38)   письмо автору
 
   для: Hemp   (24.12.2004 в 11:45)
 

>вместо adm1.php использовать глобальный массив $_SERVER['PHP_SELF']?
У, меня не получилось, его, просто, так подставить. Синтаксическая ошибка.

Вот так попробуйте.

<?
    
return "<div id=m1><a href=".$_SERVER['PHP_SELF']."?page=$href>$title</a></div>";
?>


>не могу, понять символы : "/".
>Объясните, если не трудно.

Это под особенности функции menu() в моем варианте адаптация была.

$_SERVER['PHP_SELF'] - возвращает "/n.php" (слеш перед именем файла)
А в функцию меню я передавал просто имя страницы - n.php (без слеша)
Поэтому при сравнении имен добавлял слеш.

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования