Проект переписан на базу данных SQLite3
База состоит из 3-х таблиц: валюты, обмены, курсы валют.
В админ панели теперь установка курса для каждого направления обмена производится отдельно.
Стоит защита от дублирования старых курсов в базу данных.
История изменений курсов автоматически проскроливает до последних изменений, жирным обозначены установка посльзователем курса для направления, не жирным - текущие курсы на тот момент для удобства пользователя.
История обменов тоже переписана, во время работы делает 3-х уровневый поиск в базе данных, первый - берёт данные из таблицы обменов, второй - берёт данные по id курса в таблице курсов, третий - берёт по времени проведения операции курс продажи или покупки, тот, которого не хватает для подсчёта прибыли. Расчитываем прибыль, заносим в таблицу все необходимые данные для наглядности.
Подсчёт прибыли за период сделан аналогично, но данных берёт меньше.
При выборке из базы данных берутся лишь те столюцы, котрые используются.
Всё естественно на Ajax.
Ещё нашёл уязвимость из-за внесения данных в кеш при обновлении страницы. Залатал, теперь если страница обновлена пользователем вручную - делает полный рефреш аналогично Ctrl+F5 для того, чтобы сохранившиеся положения select были сброшены на установленные по умолчанию.
Я считаю что здесь достаточно использовать 2 таблицы, таблица валют лишь информативная, так вместо таблицы достаточно столбца idValuta в таблице курсов.