Forum. MyNuke.ru

Forum. MyNuke.ru (http://forum.mynuke.ru/index.php)
-   PHP&MySQL (http://forum.mynuke.ru/forumdisplay.php?f=21)
-   -   Обработка переменной в switch case (http://forum.mynuke.ru/showthread.php?t=4010)

Alie 16.10.2011 04:07

Обработка переменной в switch case
 
Дано: модуль в phpNuke, использующий switch для изменения контента на странице.
Код:
echo "<a href=\"modules.php?name=$module_name\">main</a> <a href=\"modules.php?name=$module_name&i=more\">more</a>"; switch($i) { default: main(); break ; case "more": more(); break ; } function main() { echo "MAIN CONTENT"; } function more() { echo "MORE CONTENT"; }

Вопрос: каким образом происходит присвоение значения переменной $i при переходе по ссылке (например кликая на more открывается more();)?

Пробовала написать на голом PHP - переход по ссылке не срабатывает (страница не найдена), и это несмотря на то, что по ссылке явно присваивается значение переменной $i через _GET.
Что я упускаю?


P.S. Разобралась - перепутала операторы. Тему можно закрывать/удалять.

Soniks 16.10.2011 13:32

Если в php включена опция register_globals то переменные из запросов GET и POST при начале работы обрабтчика php становятся доступными в коде. Вот не плохо разжеванная статья.

Alie 18.10.2011 16:25

Спасибо за статью. Возник ещё один вопрос по switch. Если применяю switch внутри case другого switch:
Код:
switch($go) { default: main(); break; case"firm": firm(); break; } function firm() { switch($more) { default: info(); break; case "more" more(); break; } }

Почему не работает следующая ссылка на case "more" из index.php?go=firm:
Код:
<a href=\"index.php?go=firm&more=more\">GO</a>

Опять что-то путаю с переменными?

Soniks 19.10.2011 23:13

В функции firm() необходимо переменную $more объявить как глобальную

PHP код:
 function firm()
   {
global 
$more

Alie 20.10.2011 13:51

Sonics, спасибо!

Alie 25.10.2011 02:41

В итоге переделала:
Код:
switch($go) { default: main(); break; case"firm": firm($more); break; } function firm($more) { switch($more) { default: info(); break; case "more" more(); break; } }


Часовой пояс GMT +4, время: 21:28.

Copyright © 2005 by Soniks