Функция меняет одну БД ("копию") по другой БД ("оригиналу"). PHP, MySQ

1 200 руб. за проект
17 апреля 2020, 17:26 • 5 откликов • 54 просмотра
ЗадачаЕсть несколько БД в MySQL. Система управления на PHP/JS.

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

Требуется написать функцию, которая сравнивает 2 БД, выводит на экран отличия в их структуре и, при одобрении пользователем, изменяет структуру скопированной БД по аналогии с тестовой (оригиналом).

Обязательные требования1. Вводим название логин и пароль БД "оригинал" и БД 2 "копия"
2. Нажимаем кнопку "Сравнить"
3. На экран выводятся:

- сначала названия всех таблиц, которых нет в "оригинале", но есть в "копии", выделяем их красным, так как их предстоит удалить в "копии". Рядом выводим количество записей в каждой из этих таблиц.
Например:
Таблица - кол записей в "копии" (шапка таблицы)
table - 130 (строки)

- выводятся названия таблиц, которые есть в "оригинале" и нет в "копии", выделяем их зеленым, их предстоит добавить в "копию".
Например:
Таблица
table

- выводим названия таблиц, в которых структура "оригинала" отличается от "копии", выделяем черным. К названию добавляем ту структуру, которая отличается. Выделяем строчку зеленым, если добавляется, красным, если удаляется, желтым, если меняется тип столбца в структуре. При изменении типа столбца записи в нем не должны удалиться, но будут преобразованы автоматически в musql.
Например:
Таблица - Столбец - тип было - тип станет - кол записей в "копии"
table - sum - float(10) - dec(10,2) - 1005 (строчка изменяемого столбца, выделяется желтым)
table - sum - - dec(10,2) - 1005 (строчка добавляемого столбца, выделяется зеленым)
table - sum - float(10) - - 1005 (строчка удаляемого столбца, выделяется красным)

Около каждой строчки галочка для общего применения изменений.
Над всем этим выводом, строго над галочками кнопка с title "Выделить все". Когда она не нажата, на ней нарисован "+", когда нажата - "-".
Кстати, такой вариант исполнения чеков уже реализован под названием "ClassNewTable". Можно использовать его. Либо, если удобнее, есть смысл содать свой, так как он нам ни раз пригодится при решении других задач.

4. Пользователь выбирает галочками какие таблицы надо изменить, либо нажимает "выбрать все" и нажимает кнопку "применить", либо кнопку "отмена", которая вернет его на предыдущий экран.

5. Функция скачивает БД "копия" на компьютер пользователя в качестве бекапа. Это должен быть стандартный файл mysql для восстановления БД и всех ее строк. Эту функцию надо сохранить отдельно, что бы была возможность вызова ее при других обстоятельствах, нетолько при копировании БД.

6. Производятся именения выбранные пользователем в таблице "копия".

7. На экран выводится сообщение об успешной или неуспешной операции.

Дамп БД: https://yadi.sk/d/N8LJjzZrm8n5bQ