Сколько раз смотрел скрипты и везде по разному написано построение структуры модуля.
Например имеем доску объявлений которая состоит из нескольких страниц
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:
}
так как же все таки правильно расписывать отдельные страницы в одном файле.?
Например имеем доску объявлений которая состоит из нескольких страниц
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:
}
так как же все таки правильно расписывать отдельные страницы в одном файле.?
Т.е. я так понял через 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:
дальше как будет выглядеть структура исходя из чпу?????
}
И все же как в case записать эту строку ?
RewriteRule ^doska/catid_([0-9]+)(/?)+$ index.php?do=doska&cat_id=$1 [L]
{
case 'doska':
//инклюд класс доски
break;
//предположим закидываем что нибудь на доску
case 'doska_form':
$valid = false;
//проверяем на валидность
if ($form_valid){
//вставляем
}else {
//выводим эррор
}
break;
default:
//выводим эррор))
break;
}
а вообще посмотри в сторону JSON
есть get переменная cat_id из за которой мы открываем новую страницу с категорией
RewriteRule ^doska/catid_([0-9]+)(/?)+$ index.php?do=doska&cat_id=$1 [L]
как мне ее в case прописать что бы если она есть то выводить именно то что в case?
{
case 'doska':
if(isset($_GET['cat_id']) && is_numeric($_GET['cat_id'])){
//включаем какой-то обработчик категорий, выводим доску с заданной категорией
}else{
//выводим просто доску
}
break;
}
break;
default:
//выводим эррор))
break;
}
Если дофига всего - можешь засунуть в еще один свич. Но разница в производительности очень-очень маленькая.