Загрузка файла .xls в базу и поиск по столбцу

Цена договорная • наличный расчёт, электронные деньги
26 откликов • 1 просмотр

Формат файла — .xls. Это выгрузка остатков склада автозапчастей из 1с.


Столбцы — номер запчасти, название запчасти, количество на складе, цена.


Количество строк — около тысячи.


Хостинг — стандартная виртуалка от мастерхоста php+mysql.


Необходимо реализовать следующий функционал:


Загрузку файла .xls на сайт в базу MySQL и поиск по первому столбцу number.


В поисковую строку пользователи могут вводить цифры, буквы латинского алфавита, пробелы, дефис, подчёркивание да и любые другие символы и буквы. Регистр значения не имеет, всё, кроме цифр и букв английского алфавита вырезается из запроса к базе (в поисковой строке значения не меняются). В поиске участвуют только цифры и буквы латинского алфавита.


Минимальный поисковый запрос — 5 символов без учёта пробелов и тире и подчёркиваний. Максимальный — 12, также без учёта пробелов и тире и подчёркиваний. Если меньше или больше — запроса к базе нет, пользователю выдаётся ошибка: «Неверный формат запроса». Минимум и максимум должен легко меняться в коде программы.


Если запрос из 5 цифр и букв и соответствия не нашлось (читаем строку в базе: первый символ из запроса соответствует первому символу строки в базе, соответствия из середины не нужны) выводим ошибку: «Нет в базе, наличие и возможность заказа уточняйте по телефону». Если нашлось одно или несколько соответствий — выводим все найденные результаты.


Если запрос из 6 символов и более: при точном соответствии выводим все найденные строки, если соответствия нет выводим ошибку: «Нет в базе, наличие и возможность заказа уточняйте по телефону».


Пример:


В базе есть строки:


2431989910

24319C9910

24319C9920

2431989915


При запросе «24319» выдаёт все 4 строки.


При запросе «24319c» выдаёт 2 строки.


При запросе «24319c991» выдаёт 1 строку.


При запросе «24319 c991» выдаёт 1 строку в соотвествии с номером «24319c991».


При запросе «24319-c991» выдаёт 1 строку в соотвествии с номером «24319c991».


При запросе «24319-c9-91» выдаёт 1 строку в соотвествии с номером «24319c991».


При запросе «24319c9910» выдаёт 1 строку.


При запросе «24319c9911» выдаёт ошибку: «Нет в базе, наличие и возможность заказа уточняйте по телефону».


При запросе «24319c991177» выдаёт ошибку: «Нет в базе, наличие и возможность заказа уточняйте по телефону».


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


Интеграция в систему управления сайтом не нужна. Сайт простой, без CMS.
Файлы