Программирование

»

Order by в произвольном порядке

Век живи — век учись! В который раз в этом убедился. Надо было решить следующую задачу: есть в одной табличке, скажем table_name, некоторое поле, назовем его available. И есть возможные значения этого поля: 0, 1, 2. Предположим, что эти значения являются статусом наличия товара на складе: 0 — нет товара, 1 — есть в наличии, 2 — только под заказ. Необходимо вывести товар с сортировкой по полю available, но не в порядке возрастания или убывания его значений, а в произвольном, скажем в таком: 1, 2, 0. Т.е, сначала доступный товар, потом тот, что идет под заказ и последним — отсутствующий.

Вот простое, а главное, "стандартное" решение:

select our_fields_list from table_name
[where our_conditions_list]
order by field(available, 1, 2, 0)

Все, результат получен в более удобном виде для пользователя, ведь товар со статусом "В наличии" находиться на первых позициях, а не в средине, как если бы мы сортировали с помощью asc/desc.

Программирование

»

Притча

Первоначально было ТЗ — ТЗ несложное, понятное, рутинное. И было оно на паре десятков страниц с графическими набросками и схемами. И было оно реализовано Умельцем. И была дана ему ассоциация с Плотом. И поплыл Плот, и плав его было легкий и уверенный.

Но увидел Заказчик, что Плот маловат, что не все на него поместится, и что не исполняет он всех прихотей его. И было дополнение к ТЗ, и было оно на десятке страниц. И была реализация дополнения. И появилась на Плоте небольшая палуба в виде доски объявлений, рассылки и галереи фотографий, составляемой плавающими на сем Плоту. И была дана ассоциация ему Ладья.

Но возжелал Заказчик нарастить дополнительную палубу. Дополнительные типы статей, теги и комментарии плавающих к статьям этим. А еще рейтинги обозреваемых товаров, каталог ссылок и прочие премудрости. И была палуба, и Ладья продолжила плаванье. И имя этой Ладья было дано Парусник.

И увидел Заказчик, что Парусник это хорошо, но не всегда дует ветер, не всегда можно достичь желаемого места назначения. Ведь картинки к статьям это хорошо, но несколько видео-флешек и несколько картинок будет еще лучше. И была задача интегрировать flash-проигрыватель, который показывал бы сие. И появился у Парусника мотор, и был наречен сей Парусник Яхтой.

Но желающих плавать на Яхте стало больше. И было желание добавить еще одну палубу. И была она нестандартная, особенная. И не подходили функционал к этой палубе, написанный для Плота, но исполняющие желания даже для тех, кто уже застал его Яхтой.

И было много работы по работе с этой палубой. Не всякой дерево подходило. Но была надстроена эта палуба. И поплыла Яхта с новыми силами, но имя ей было дано Корабль. Но очень мало суждено ему было проплавать, нося гордое имя Корабль. Продолжение →

Программирование

»

Блочная верстка

Замучился верстать табличками… Огромные по размеру шаблоны, ненормальное соотношение разметка/контент, многоуровневая вложенность таблиц, трудность вылавливания багов и пр. Да и просто захотелось чего-то новенького, тем более, что и неделя свободного времени была. Решил попробовать сверстать сайт div'ами. Надо заметить, что до этого решения просто плевался на блочную верстку. Только табличную считал единственно приемлемой.

Ну что можно сказать — не так страшен черт, как его малюют. Не спорю, сложный макет я бы все равно верстал таблицами, опыта намного больше, а простые можно смело дивами. В блочной же верстке основные проблемы у меня возникли именно с "чудо-браузером" Internet Explorer. Как-то у него все по-своему получалось, не как у остальных.

Да, вначале испытываешь некий дискомфорт, ограниченность. Пальцы так и норовятся вбить привычные последовательности из table, tr, td и наставить кучу страшных параметров тут же, в html-шаблоне. Но в том и фишка, чтобы отделить структуру от дизайна, повысить семантику кода.

Не буду приводить всевозможных преимуществ (быть может даже и спорных) блочной верстки над табличной (таких как "удобоперевариваемости" поисковыми машинами). Назову лишь те, явные, которые даже у "табличников" не вызовут нареканий на истинность. По крайней мере, я так думаю. Дальше →

Программирование

»

TinyMCE и iframe, object

Недавно столкнулся с тем, что TinyMCE категорически отказывался сохранять iframe, object и некоторые другие элементы, а просто удалял их из текста перед записью в базу данных. Замечу, что данный WYSIWYG-редактор использую в самописной CMS.

В самой же документации ничего об этом не нашел да и Google по этому поводу умолчал, а те скудные обрывки реплик, что все-таки удалось найти, ничего толкового не дали.

После всевозможных экспериментов решение было найдено. Быть может, кому-то еще понадобится.

В раздел инициализации редактора tinyMCE.init необходимо добавить следующую строку (для поддержки iframe) Дальше реализация →