Эксклюзив
17 января 2011
4945

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

Почему я решил описать рождение именно этого проекта, а не одного из десятков других, коих история похожа, затрудняюсь сказать - так уж вышло.

Однажды в конце октября 2010 ко мне зашел начальник одного управления, которого высокое руководство бросило на прорыв с поручением срочно навести порядок в учете, ну скажем условно, курсантов учебного подразделения. Выяснилось, что в тот момент невозможно было достоверно сказать об этой группе людей, ничего, кроме того, что такая группа существует. Несколько пыльных папок с бумагами, да десяток разрозненных файлов в формате ворда и экселя - вот как хочешь, так и считай своих человечков.

Просьбу коллега сформулировал кратко: сделай срочно(!), какую-нибудь базу данных, чтоб можно было хоть элементарный список составить, ну а потом уж будем развивать... Вот такое ТЗ.

Последние лет десять я почти ничего, кроме web-проектов, не писал, поэтому мысли ваять что-то на дельфи, 1С или, прости господи, акцсесе у меня не возникло - ясно, что это будет web-сервис.

Пару минут (ну ладно, часов) я поразмышлял, и понял, что мне неизвестно:
- кроме фамилий, какие еще сведения о каждом курсанте необходимо хранить в базе;
- какого типа будут эти данные;
- какой механизм потребуется для отбора подмножеств курсантов (по курсам, специальностям, пр.)
- какие формы вывода на печать необходимо предусмотреть.

Времени на выяснение ответов не было, к тому же и не было никого живого, кто мог бы их внятно сформулировать. Нужно было срочно что-то придумать, а что неясно... Знакомо.

В таких случаях вместо удочки надо давать юзеру ножик (чтоб выстругал себе удилище), кусок лески и крючок. Я решил так и сделать.


Итак генератор, конфигуратор, конструктор - как хочешь назови - юзер сам должен строить свою систему. Сначала, конечно вкривь и вкось, потом вернется и поправит.

Поискал аналоги, повспоминал, понял - готового решения не найти - придется-таки поработать руками (для мозга здесь занятия не предвиделось).
Систему авторизации я взял из предыдцщего своего проекта, а все остальное решил написать с нуля.

В опорную таблицу (назвал ее t0) включил поля ФИО, Примечания и Дедлайн. Первое, очевидно, необходимо, остальные - от фонаря - чтоб место не пустовало на первом экране. (Визуализация в таком простом проекте сама получается, паралельно с разработкой базовой архитектуры.)

Остальные таблицы и их поля должен проектировать сам юзер (админ) из расчета - чтоб одна таблица помещалась по ширине экрана (в браузере конечно).


Ах да, база - MySQL, язык программирования - PHP, сервер - Linux & Apache, в общем классический LAMP.


Списки таблиц и полей сохраняются в базе, а рабочие таблицы на их основе создаются автоматом по мере заполнения данными. Типы полей я упростил до предела, дав админу на выбор очень короткий список: строка, текст, дата, число.

Если таблица еще пуста ее можно и удалить, иначе админ должен вначале перенести из нее непустые колонки в другую таблицу, можно специально создать таблицу под названием Корзина для подобных целей.

На самом деле таблицы mysql имеют имена типа t1, t2, t3, и поля f1, f2, f3, но для конструирования интерфейса юзера это не годится, поэтому предусмотрены места для хранения человеческих имен и порядка сортировки. В любое время админ может переименовать и пересортировать таблицы и поля в них. Таким образом админ формирует карточку курсанта состоящую из полей, которые сгруппированы потаблично.

Те поля у которых в конструкторе поставили птичку Фильтр - становятся донорами для селекторов в экранной таблице.

Потом я подумал, что неплохо бы к карточке дать возможность прикладывать файлы, фотографии и не только. Сделал и это. Вот конструктор и готов


Подобная штука (конструктор), чуть позже, была придумана для генерации отчетов (печатных форм). Конструировать их может только админ, а юзать могут все. О них подробно написано в FAQ`е.


Через пару дней после "получения ТЗ" отдел по учету курсантов, с радостным повизгиванием, начал заполнять базу (штук 200 фамилий я им залил из экселевского файла). А сегодня я закончил шлифовать ее (систему) наждачкой и решил зафиксировать эту историю для истории.


Пожалуй на этом нужно заканчивать лирику - пора давать адреса, пароли, явки:

Исходник (дамп внутри) брать здесь
Смотреть действующую модель здесь

Суперпользователь:
Логин: an2kus@gmail.com
Пароль: 111

Админ БД:
Логин: admin@gmail.com
Пароль: 111

Редактор БД:
Логин: editor@gmail.com
Пароль: 111

Юзер (читатель):
Логин: user@@gmail.com
Пароль: 111


Зайдите админом и почитайте "Помощь для пользователя" и FAQ


Засим, привет!
Пишите, если что.
Рейтинг всех персональных страниц

Избранные публикации

Как стать нашим автором?
Прислать нам свою биографию или статью

Присылайте нам любой материал и, если он не содержит сведений запрещенных к публикации
в СМИ законом и соответствует политике нашего портала, он будет опубликован