паттерн парсинга $_GET

iliah

Новичок
паттерн парсинга $_GET

существует ли более удобный способ работы с $_GET (когда все возможные параметры обрабатывает один скрипт), нежели
PHP:
if (isset($_GET['par1'])) {...;}
      else { if (isset($_GET['par2'])) {...;}}
           ...
else {.. и когда строка пуста ..;}
ps: буду признателен если знающие подскажут, где бы почитать про паттерны программирования на PHP (для начала желательно по-русски)
 

iliah

Новичок
Автор оригинала: nofx
PHP:
if (isset($_GET['par1'])) {
//а что вот тут должно выполняться ? 
}
ну да, контекстно-зависимый вывод
если УРЛ содержит par1, то то-то и то-то
если par2, то что-то другое
или если УРЛ не содержит "query_string" то выводится что-то по дефолту
 

Developer

Guest
можно так
для строковых значений:
PHP:
$part1=addslashes(@trim($_GET['par1']));
для целочисленных:
PHP:
$part2=@intval($_GET['part2']);
 

_RVK_

Новичок
Да, есть. удобнее не заводить хучу параметров, а один, но с разными значениями.
PHP:
if (isset($_GET['param']))
{
  switch ($_GET['param'])
{
   case 0:
     ....
   break;
   case 1:
     ....
   break;
   default:
     ....
   break;
}

}
Но я бы так делать не советовал. Каждой задаче отдельный скрипт а не все в одном...
 

iliah

Новичок
1) но это ведь для одного параметра и различных его значений, а если их несколько разных (параметров)
2) насчет раздельных скриптов: т. е. для вывода формально одной и той же страницы нужно для каждого возможного параметра (из фиксированного их числа) писать отдельный скрипт?
 

Фанат

oncle terrible
Команда форума
iliah
можешь запихать все в один
паттерн позволяет
если уж делать криво - то на всю катушку
 

Krisha

pain in the neck
iliah
Опиши подробнее задачу. Че за разные параметры собстна ?
 

_RVK_

Новичок
1) ты спросил как удобнее я ответил, параметров может быть хоть сто а тот по которому ты выбираешь что выводить должен быть один.
2) в общем случае нужно не код включать в HTML а HTML в код. Тут хоть шаблоны используй, хоть простыми инклюдами, а все одно....

Но если бы ты подробнее объяснил свою задачу, тебе бы более конкретно могли советовать....
 

iliah

Новичок
методом GET передаются (в моем конкретном случае) id страницы из листажа (..?page=2&...) - $_GET['page']
или id статьи с какой-то страницы (..?article=3..) - $_GET['article']
и т. д.
не совсем понимаю, зачем для этого раздельные скрипты
 

Krisha

pain in the neck
и че, если у тебя 345 страниц, ты будешь 345 раз делать сравнение, тебя ничего не смущает ?
 

iliah

Новичок
Автор оригинала: Krisha
и че, если у тебя 345 страниц, ты будешь 345 раз делать сравнение, тебя ничего не смущает ?
да нет, кол-во сравнений равно кол-ву дискретных параметров
т.е. if(isset($_GET['page']) {шаблон, куда это самое значение подставляется (1 раз!)}
 

crocodile2u

http://vbolshov.org.ru
В дополнение к предыдущему посту (от Krisha):

Не будет ли удобнее завести параметр... ну, скажем мннээ... $_GET['mode'] - и по значению данного параметра определять, какой скрипт вызывать, ну а дальше передавай что хочешь и сколько хочешь.
 

_RVK_

Новичок
iliah а я не понимаю зачем тут все делать в одном скрипте? Твой вопрос сам собой отпадает, если ты сделаешь это двумя скриптами....
 

iliah

Новичок
imho, зашли дальше чем требуется
для того, чтобы определить какой скрипт вызвать все равно надо разбирать УРЛ, вот я и спрашиваю, каким приемом пользоваться, если не if/else
 

crocodile2u

http://vbolshov.org.ru
imho, тебе уже сказали, что разбирать URL не надо.

PHP:
$default_inc = "page";
$valid_incs   = array('page','article');
$inc              = (isset($_GET['inc']) && in_array($_GET['inc'], $valid_incs)) ? $_GET['inc'] : $default_inc;
include($inc.".php");
 

Фанат

oncle terrible
Команда форума
iliah
тебе не надо рзбтрать урл
тебе нужен из урла ОДИН параметр.
 

Krisha

pain in the neck
Diesel
При чем тут 2 скрипта ?

iliah
Я так понял ты постранично выводишь некий article. Соответственно получаем такую схему:
PHP:
if (!empty($_GET['article'])) {
   $article = intval($_GET['article']);
   if (!empty($_GET['page'])) {
       $page = intval($_GET['page']);      
   } else {
       $page = 1;
   }

   // выводим определенную страницу указанного article
}
else {
   // выводим что-то по-умолчанию
}
 
Сверху