Сколько раз смотрел скрипты и везде по разному написано построение структуры модуля.

Например имеем доску объявлений которая состоит из нескольких страниц
1 - категории объявлений
2 - все объявления в заданной категории
3 - само объявление

можно конечно разнести это все в отдельные файлы php.

Но хотелось бы одним файлом.

Вот и создался вопрос. как это лучше сделать.

структура

index.php?do=doska - Главная страница доски с категориями
index.php?do=doska&cat_id - Категория со всеми объявлениями
index.php?do=doska&add_obj - Добавление объявления
index.php?do=doska&edit_obj - Редактирование объявления

Начинаем собирать костяк и встает вопрос как это будет выглядеть в файле

if (isset($_GET['cat_id'])) { $get_cat_id = intval($_GET['cat_id']); }
if (isset($_GET['add_obj'])) { $get_add_obj = $_GET['add_obj']; }
if (isset($_GET['edit_obj'])) { $get_edit_obj = $_GET['edit_obj']; }

тут насмотрелся кто пишет
1 вариант

if ($do = "doska" && $get_cat_id=='' && $get_add_obj =='' && $get_edit_obj=='') {
}
elseif ($do = "doska" && $get_cat_id!='' && $get_add_obj =='' && $get_edit_obj=='') {
}
elseif и т.д.

2 вариант

swith ($_GET['do']) {

case "doska":
break:

case "doska/add_obj"
break:

}

так как же все таки правильно расписывать отдельные страницы в одном файле.?

@темы: PHP, Вопросы

Комментарии
14.05.2010 в 18:43

что за бред. нету "правильного" способа. Все что будет работать - правильно. А дальше уже можно будет смотреть на устойчивость к уязвимостям и нагрузкам
14.05.2010 в 18:44

Крайне злопамятное хамло ;)
Только в IF'ах ставим двойное равно)
14.05.2010 в 18:52

так как же все таки нужно строить? можете структуру показать?
14.05.2010 в 21:52

Тигр да для себя, я использую чпу. Просто для наглядности пример без него сделал.

Т.е. я так понял через switch делать все?
как тогда будет выглядеть структура

RewriteRule ^doska/(/?)+$ index.php?do=doska [L]
RewriteRule ^doska/catid_([0-9]+)(/?)+$ index.php?do=doska&cat_id=$1 [L]

RewriteRule ^doska/add/(/?)+$ index.php?do=doska&add [L]
RewriteRule ^doska/edit/obj_([0-9]+)(/?)+$ index.php?do=doska&edit&obj=$1 [QSA,L]

switch (&_GET['do']) {

case "default"; тут понятно что по умолчанию
break:

дальше как будет выглядеть структура исходя из чпу?????



}
15.05.2010 в 14:59

[revolver] Мне сейчас нужно понять как правильно реализовывать.

И все же как в case записать эту строку ?
RewriteRule ^doska/catid_([0-9]+)(/?)+$ index.php?do=doska&cat_id=$1 [L]
15.05.2010 в 15:23

маленькое щячло
switch ($_GET['do'])
{
case 'doska':
//инклюд класс доски
break;

//предположим закидываем что нибудь на доску
case 'doska_form':
$valid = false;
//проверяем на валидность
if ($form_valid){
//вставляем
}else {
//выводим эррор
}
break;

default:
//выводим эррор))
break;
}


а вообще посмотри в сторону JSON
15.05.2010 в 15:59

Мохнорыл Немного непонятно
есть get переменная cat_id из за которой мы открываем новую страницу с категорией

RewriteRule ^doska/catid_([0-9]+)(/?)+$ index.php?do=doska&cat_id=$1 [L]

как мне ее в case прописать что бы если она есть то выводить именно то что в case?
15.05.2010 в 18:41

маленькое щячло
switch ($_GET['do'])
{
case 'doska':

if(isset($_GET['cat_id']) && is_numeric($_GET['cat_id'])){
//включаем какой-то обработчик категорий, выводим доску с заданной категорией
}else{
//выводим просто доску
}

break;

}
break;

default:
//выводим эррор))
break;
}

Если дофига всего - можешь засунуть в еще один свич. Но разница в производительности очень-очень маленькая.
15.05.2010 в 20:14

Мохнорыл Благодарю. Теперь понятно как составлять.
15.05.2010 в 20:23

маленькое щячло
упс) лишний брейк)
15.05.2010 в 21:07

Мохнорыл да я заметил и закрыл switch два раза=))

Расширенная форма

Редактировать

Подписаться на новые комментарии
Получать уведомления о новых комментариях на E-mail