я что-то подобное встретил на первой работе в b[ самописной cms
и потому знаю что спросить))
что делать если нужен url не из 2ух составляющих а из 1 или 3-4-5 ? и с каждым из них должны быть гет-параметры?
а если гет-параметр нужен не в конце урл а в середине?
типа /goods/moloko/in-cart
/goods/telefon/in-cart
были такие заморочки от SEOшников (Добавление)
выход:
типа matherialized path
храни шаблон urla в таблице
как бы тебе твое решение ни казалось красивым это не так))
Не совсем понятна цель изъятия данных из начала адресной строки или середины.
Вот генерация sql запроса, на существование и целостности url и возвращении результата
Если я Вас правильно понял, нужна возможность получения всей цепочки, а не только последнего сегмента?
Тогда все просто, строку SELECT l{$shv_url_count}.* генерируем не в начале функции, а в цикле, как и выборка. Тем самым, мы получает либо все данные либо ни чего, если нарушена логика.
Народ, Вы больны патернами и фреймфорками. Я не говорю что это плохо, их надо знать, но и ленится то же не стоит. Ведь php, насколько я знаю один из простейших языков программирования и фреймворки, в большинстве проектов просто, просто в них не нуждаются.
Zuldek пишет:
о вы заного открыли паттерн, уже лет 6 используемый всеми популярны
Подскажите плиз название патерна данной реализации!
И ни кого не смутило, что в данной логике все завязано на одной таблице? То бишь, говорить языком фреймворков, таблица является маршрутизатором(хранит в себе ВСЕ url адреса приложения) и контроллером.
Здесь если программисты, которые делают проекты на фреймворках, только когда это реально необходимо?
Доброго времени суток! Этой темой, скорее всего опросом, я хочу узнать, сколько программистов будут солидарны с моей идеей или же нет. И по чему.
В течении довольно долгого времени я писал каркас для создания веб приложений. с постоянным переписыванием (менялась основная логика), опираясь на весь портфель, ранее созданных приложений.
В итоге каркас получился менее 100 строк кода ( подсчитал и сам улыбнулся ) + 1 таблица как часть системы(каркаса)
Логика заключается в следующем
Берем массив из URL (Моменты касаемо безопасности это я опущу, тут они не к чему), то есть адрес /news/hlebnye-kroshki равен array ( 0 => 'news', 1 => 'hlebnye-kroshki', ), далее из массива генерируем sql запрос
LEFTJOIN page_sity AS l1 ON l1.id = l2.parent_id AND l1.name_url ='news'
WHERE l2.name_url ='hlebnye-kroshki'AND l1.parent_id ='0';
Для тех кто не понял: этот запрос вернет из таблицы строку где name_url = 'hlebnye-kroshki'. При этом если соблюдена иерархия news>hlebnye-kroshki
Вот и закончилась основа каркаса ))))))
Что мы получили из таблицы?
id - понятно
name_url - сегмент адресной строки относящийся к текущей странице
linck_name - название страницы или title
parent_id и level - idродительской страницы и уровень вложенности
id_module - список модулей установленных на данную страницу (верхние, нижние, основное.. меню, новости, статьи галереи, каталоги, карточки товаров.......)
id_table и table_name - id и имя таблицы где брать данные (новости, статьи галереи.......) А так же имя таблицы соответствует имени подключаемого html шаблона
примерные затраты шаред-хостера для такой системы 352.30 Кб / 0.0049 сек / 9 запросов. система отработала: 3 разных расположения меню, меню каталога товаров, 2 html блока (реклама), хлебные крошки, контент новости, комментарии к новости.
Из ООП в системе один объект синглтон для базы данных. Все остальные вспомогательные классы со статическими методами, сама система (каркас) написан в процедурном стиле.
P.S. Как то компактно получилось))). Если что то не понятно спрашиваете. И главное, Ваше мнение если поняли логику.
shum0531? что-то не в ту степь направили, причем здесь дерево с категориями, и
Цитата:
Получение sql запроса по url массиву
задача была трех уровненное меню. Да мой код не для этого решения, его нужно переделать. Все же дерево id + parent_id, не много вариантов выборки, мой пример даст понять принцип выборки одним запросом.
Доброго времени суток! Помогите понять принцип работы PDO::exec, поиск моей проблемы не дал результатов, возможно плохо искал.
Суть:
обновляю большое количество строк в транзакции.
Далее проверяю $is_error для того что бы откатится либо фиксировать.
В данном скрипте $is_error всегда TRUE, то есть PDO::exec где то вернула FALSE. После часа мучений пришёл к выводу, что PDO::exec возвращает FALSE если была попытка обновить строку старыми данными. Вернее данные для обновления, идентичны данным в базе и не нуждаются в их изменении (в моем случае это вполне возможно).