Есть динамическое меню http://php-css.h19.ru
Теперь хочу сделать следующее: что бы при выборе пункта менюшки он оставался, как выбранный пункт, подсвеченный нужным светом.
Можно сделать с использованием переменных и затем их проверкой, но получиться громоздский php код. Подскажите,пожалуйста как все сделать красиво и при min php кода
Спустя 27 минут, 49 секунд (17.05.2012 - 22:25) inpost написал(а):
Громоздко? Совсем нет. Обычные
Либо массив навигации, а дальше циклом прогнать, и там в цикле такую же проверку. Дольше делать, съекономишь по объему 10-15 символов.
if($_GET['page'] == $var) {echo 'class="selected"';}
Либо массив навигации, а дальше циклом прогнать, и там в цикле такую же проверку. Дольше делать, съекономишь по объему 10-15 символов.
Спустя 13 минут, 58 секунд (17.05.2012 - 22:39) marabuzo написал(а):
т.е. каждому <li> писвоить свой класс и затем если элемент выбран, делать его активным?
inpost, можно пожалуйста поподробнее и кусочек кода..
inpost, можно пожалуйста поподробнее и кусочек кода..
Спустя 3 минуты, 14 секунд (17.05.2012 - 22:42) inpost написал(а):
лучше ты со своим кусочком кода, как ты и хотел делать.
Спустя 4 минуты, 32 секунды (17.05.2012 - 22:47) Gabriel написал(а):
мне вот интересно.... а какже всем извесный JavaScript/jQuery?
думаю, даже вариант прогона цыклом по меню для сравнения будет менее геморным....
думаю, даже вариант прогона цыклом по меню для сравнения будет менее геморным....
Спустя 2 дня, 29 минут, 22 секунды (19.05.2012 - 23:16) marabuzo написал(а):
Цитата (inpost @ 17.05.2012 - 19:42) |
лучше ты со своим кусочком кода, как ты и хотел делать. |
вот что у меня получилось:
<div id ="menu">
<ul>
<?php
if(@$n == 'selekted') @$m[0]="sel"; else $m[0]="no_sel";
if(@$k == 'selekted') @$m[1]="sel"; else $m[1]="no_sel";
if(@$p == 'selekted') @$m[2]="sel"; else $m[2]="no_sel";
if(@$v == 'selekted') @$m[3]="sel"; else $m[3]="no_sel";
echo " <li class=\"$m[0]\"><a href='?n=selekted'>Меню-1</a></li>";
echo "<li class=\"$m[1]\"><a href=\"?k=selekted\">Меню-2</a></li>";
echo "<li class=\"$m[2]\"><a href=\"?p=selekted\">Меню-3</a></li>";
echo "<li class=\"$m[3]\"><a href=\"?v=selekted\">О сайте</a></li>";
?>
</ul>
</div>
Как можно по другому сделать? Или что подправить в коде?Можно ли ..<a href='?переменная=selekted'.. как то исключить?
Спустя 3 часа, 19 минут, 28 секунд (20.05.2012 - 02:35) inpost написал(а):
marabuzo
Собаки тут вообще что делают? Зачем они?
И что за $n, $k ? Обычно ссылка передаётся через суперглобальный массив GET, $_GET (!!!), а не непонятные $n, $k.
echo ''; - через одинарные кавычки, чтобы не парить мозг с экранизацией двойных.
Ну норм, только я бы сделал непосредственно внутри вывода ссылки через тернарный оператор.
HTML идёт:
Собаки тут вообще что делают? Зачем они?
И что за $n, $k ? Обычно ссылка передаётся через суперглобальный массив GET, $_GET (!!!), а не непонятные $n, $k.
echo ''; - через одинарные кавычки, чтобы не парить мозг с экранизацией двойных.
Ну норм, только я бы сделал непосредственно внутри вывода ссылки через тернарный оператор.
HTML идёт:
<ul>
<li class="<?php echo (тут тернарный оператор); ?>"><a href="link" />menu</li>
Спустя 9 часов, 34 минуты, 11 секунд (20.05.2012 - 12:10) marabuzo написал(а):
Действительно, через тернарный оператор гораздо короче и понятнее.
..
<li class="<?php echo ($n == 'selekted') ? 'sel' : 'no_sel'; ?>"> <a href='?n=selekted'>Меню-1</a></li>
<li class="<?php echo ($k == 'selekted') ? 'sel' : 'no_sel'; ?>"><a href='?k=selekted'>Меню-2</a></li>
...
Собачки нужны были для удаления сообщения - Notice: Undefined variable:..
И каким образом можно в моем случае передать ссылку пи помощи $_GET, не используя конструкцию ->
<form action="index.php" method="get"> ... </FORM>???
..
<li class="<?php echo ($n == 'selekted') ? 'sel' : 'no_sel'; ?>"> <a href='?n=selekted'>Меню-1</a></li>
<li class="<?php echo ($k == 'selekted') ? 'sel' : 'no_sel'; ?>"><a href='?k=selekted'>Меню-2</a></li>
...
Собачки нужны были для удаления сообщения - Notice: Undefined variable:..
И каким образом можно в моем случае передать ссылку пи помощи $_GET, не используя конструкцию ->
<form action="index.php" method="get"> ... </FORM>???
Спустя 18 минут, 12 секунд (20.05.2012 - 12:28) inpost написал(а):
marabuzo
Собачки нужны, чтобы скрыть непонимание ПХП. Любую ошибку надо не скрывать, а исправлять. Простой способ:
Потом включаешь ЧПУ (реврайт) на сайте, и ссылки делаешь красивыми:
Собачки нужны, чтобы скрыть непонимание ПХП. Любую ошибку надо не скрывать, а исправлять. Простой способ:
(isset($n) && $n == 'selected')
index.php?page=n
index.php?page=k
index.php?page=contacts
index.php?page=news
index.php?page=main
Потом включаешь ЧПУ (реврайт) на сайте, и ссылки делаешь красивыми:
site.ru/n
site.ru/contacts
site.ru/news
site.ru/main
Спустя 31 минута, 15 секунд (20.05.2012 - 12:59) marabuzo написал(а):
Ну это то понятно, конечно при разработке серьезного сайта использование собачкек не приемлемо.. Это так, для сокращения написания кода)
В данном коде все-таки можно как-то использовать суперглобальный массив $_GET,$_POST ? Или уже надо в дело пускать и язык JScript? Конструкцию <form>?
В данном коде все-таки можно как-то использовать суперглобальный массив $_GET,$_POST ? Или уже надо в дело пускать и язык JScript? Конструкцию <form>?
Спустя 29 минут, 22 секунды (20.05.2012 - 13:28) inpost написал(а):
marabuzo
Собака - признак быдлокодерства, а не сокращенной записи, именно поэтому я над этим акцентировал внимание.
Насчёт вопроса, я не понял, у тебя итак всё правильно работает...
- это твой, а это через GET:
Собака - признак быдлокодерства, а не сокращенной записи, именно поэтому я над этим акцентировал внимание.
Насчёт вопроса, я не понял, у тебя итак всё правильно работает...
<li class="<?php echo ($n == 'selekted') ? 'sel' : 'no_sel'; ?>"> <a href='?n=selekted'>Меню-1</a></li>
- это твой, а это через GET:
<li class="<?php echo ($_GET['n'] == 'selekted') ? 'sel' : 'no_sel'; ?>"> <a href='?n=selekted'>Меню-1</a></li>
Спустя 1 час, 48 минут, 26 секунд (20.05.2012 - 15:17) marabuzo написал(а):
Спасибо, разобрался!
Цитата (inpost @ 20.05.2012 - 09:28) |
.. ЧПУ (реврайт) на сайте |
первый раз такое встречаю ..
Как я понимаю необходимо в корневой папке сайта создать файл - .htaccess?
И каким содержимым его необходимо заполнить?
Спустя 1 час, 9 минут, 54 секунды (20.05.2012 - 16:27) inpost написал(а):
marabuzo
Загугли. Там много информации по этому поводу.
Загугли. Там много информации по этому поводу.
Спустя 1 час, 4 минуты, 8 секунд (20.05.2012 - 17:31) marabuzo написал(а):
<li class="<?php echo ($page == 'k') ? 'sel' : 'no_sel'; ?>"><a href='?page=k'>Склад</a></li>
написал в корне файл .htaccess
со след. содержанием :
<IfModule mod_rewrite.c>
RewriteEngine On - включаем mod_rewrite
RewriteBase / - точка от которой начинать монтировать урлы
сама сторочка преобразования ссылок
RewriteRule ^index/([a-z]+).php$ index.php?page=$1 [R]
[R] указывает на реврайт сайта
ИТОГ: НЕ преоразуются ссылки В чем ошибка?
написал в корне файл .htaccess
со след. содержанием :
<IfModule mod_rewrite.c>
RewriteEngine On - включаем mod_rewrite
RewriteBase / - точка от которой начинать монтировать урлы
сама сторочка преобразования ссылок
RewriteRule ^index/([a-z]+).php$ index.php?page=$1 [R]
[R] указывает на реврайт сайта
ИТОГ: НЕ преоразуются ссылки В чем ошибка?
Спустя 17 минут, 55 секунд (20.05.2012 - 17:49) inpost написал(а):
А ты точно открываешь страницу так: index/PAGE.php ?
Спустя 4 дня, 1 час, 3 минуты, 59 секунд (24.05.2012 - 18:53) marabuzo написал(а):
Переписал немного..
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php?page=$1 [L]
но и при этом у меня ссылка имеет следующий вид
http://localhost/site/?page=...
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php?page=$1 [L]
но и при этом у меня ссылка имеет следующий вид
http://localhost/site/?page=...
Спустя 33 минуты, 34 секунды (24.05.2012 - 19:26) inpost написал(а):
она имеет 2 вида, и такой, как ты показал, и уже с реврайтом.
Спустя 2 часа, 21 минута, 15 секунд (24.05.2012 - 21:48) marabuzo написал(а):
Я понимаю, но как все же мне добиться красивой ссылки???
Где и что еще можно дописать??? Уже сотню вариантов перебрал...
Где и что еще можно дописать??? Уже сотню вариантов перебрал...
Спустя 9 минут, 40 секунд (24.05.2012 - 21:57) inpost написал(а):
index.php?page=$1 - регулярка
/index.php?page=contacts = /contacts (синоним). Открывай ссылку по второму виду.
И сайт пропиши с hosts, а не через локалхост.
/index.php?page=contacts = /contacts (синоним). Открывай ссылку по второму виду.
И сайт пропиши с hosts, а не через локалхост.
Спустя 2 минуты, 17 секунд (24.05.2012 - 22:00) johniek_comp написал(а):
мб ты так хотел?
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule ^(.*)$ index.php?page=$1 [L,QSA]
Спустя 12 часов, 6 минут, 10 секунд (25.05.2012 - 10:06) marabuzo написал(а):
Спасибо всем!!! Все работает. Нашел причину