Pull to refresh

DataIncrement — дополнение к возможностям phpMyAdmin

Reading time3 min
Views2.6K
Когда используешь что-то вроде phpMyAdmin для работы с данными в базе, всегда неудобно что связанное поле отображает просто число из другой таблицы, вместо конкретных данных, которые там прячутся.

Например, в поле `country_id` стоят числа, а не название страны. Приходится прыгать из таблицы в таблицу. Или писать отдельный sql, что бывает зачастую неудобно, если надо по быстрому. Или с телефона набирать sql запрос не с руки. А если нужно обновить страну из поля `country_id`, то опять прыгать из таблицы в таблицу. Короче — неудобно все это.

Проще показать в формате было-стало:

Было

image

Стало

image

Задача


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

Решение


Эта задача давно меня мучила, по роду занятия веб-разработкой. Было несколько подходов к снаряду, в результате остановился на самом простом решении, которое только смог придумать. И главное, которым хотелось бы пользоваться самому, а не решать абстрактную проблему абстрактных пользователей.

В результате получился сайт DataIncrement.com

Как работает DataIncrement


  1. Подключаем свою базу данных на DataIncrement, используя host, name, pass, dbname (пароль сохраняется в куках браузера или в сессии, т.е. на сайте не храниться, если что). У вас должен быть пользователь с возможностью подключения с любого хоста.
  2. Регистрация всех действий происходит через подтверждение по почте. Возможно это спорное решение, но пока так. Поэтому идем в почту и жмем ссылку из письма. Таким образом подтверждаем подключение.
  3. После этого можно перейти к списку подключенных БД, на главной странце dataincrement.com
  4. Затем кликаем на подключенную БД — это будет страница со списком всех доступных таблиц.
  5. Далее нужно перейти на вкладку «Links» (вторая ссылка от названия базы «Пример базы» на картинках «Было-Стало»), где нужно настроить связь между таблицами для отображения связанных данных. С помощью записи не хитрого текста, например:

@link city
    country_id = country.country_id
        name
    region_id = region.region_id
        name

Где:

  • на первой строке: @link — это обозначение секции, а city — это имя таблицы
  • далее обязательно с новой строки и обязательно отступ слева
  • начинается описание полей таблицы city, для которых будет настроено отображение, т. е.
    country_id = country.country_id — это поле `city`.`country_id` = `country`.`country_id`
  • далее обязательно с новой строки и более глубоким отступом
  • название поля для дополнительного отображения, т. е. `country`.`name`

Таким образом мы получаем отображение таблицы с картинки «Стало», где кроме реального значения поля, через точку с запятой отображается значение поля `country`.`name`. Таким же образом сделана настройка для другого поля `region_id `, которое связано как видно из настройки с полем `region`.`region_id`.

image

Редактирование


Редактирование данных происходит по двойному клику в ячейке таблицы. Тогда внизу страницы появляется спец. панель где можно изменить значение и отправить данные на изменение.

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

Для настройки поисковых запросов будет использоваться похожий синтаксис, как и для секций @link, только с ключевым словом @search

@search city
    country_id = country.country_id 10
        name $*

где отличие заключается в том, что:

  1. указывается ограничение возвращаемых строк, через пробел — это цифра 10
    country_id = country.country_id 10
  2. далее указываются поля для отображения, но через пробел, дополнительно указывается поисковый шаблон, где доллар $ — это введенное значение, а звездочка * — означает какие угодно символы.
    Сейчас у меня указано $* для поля `country`.`name`, т. е. поиск по имени будет работать по начальным буквам слов в указанном поле.
    Шаблон может иметь четыре варианта: $, *$, $*, *$*

Заключение


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

Идей и планов много, однако пока этот проект у меня проходит как хобби, критика принимается как пища к размышлению. Хотя бы для того чтобы я бросил этими глупостями заниматься и начал заниматься другими глупостями.

Заметка написана, как попытка не загромождать главную страницу DI всякими «лендингами» с описанием не понятно чего, но чтобы можно было дать ссылку на описание и принцип работы. К тому же сразу с независимой критикой, из серии — «вам же говорили».
Tags:
Hubs:
+2
Comments16

Articles