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

Однажды в конце октября 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


Засим, привет!
Пишите, если что.

Док. 635412
Опублик.: 17.01.11
Число обращений: 0

  • Немченко Александр Борисович

  • Разработчик Copyright © 2004-2019, Некоммерческое партнерство `Научно-Информационное Агентство `НАСЛЕДИЕ ОТЕЧЕСТВА``