Необходимо написать простой веб-интерфейс (PHP, Ajax)
Необходимо написать простой веб-интерфейс.
Внешний вид интерфейса - простейшая форма: - поле ввода и кнопка "найти".
В поле ввода клиент заносит название города и в результате поиска
получает список пунктов самовывоза в этом городе (если они есть),
либо сообщение о том, что пунктов в городе нет и возможны альтернативные пути доставки, например почтой.
Логически задача реализуется двумя частями:
1. Служебная часть. Есть сайт, который в ответ на наш POST-запрос отдает нам актуальный XML-документ с перечнем пунктов - с ним достаточно синхронизироваться раз в сутки. Т.е. первая часть интерфейса будет представлять из себя скрипт (PHP, PERL), который по Cron занесем на выполнение ежедневно в заданное время.
Алгоритм: запустился, отправил POST-запрос, получил ответ, в случае успешного получения ответа стер старую базу (SQL),
записал новую информацию, отправил сообщение на электронную почту "успешная синхронизация. дата, время, обработано ХХХ записей".
В этот момент нужно вспомнить про прямые руки - в XML-документе придет непредсказуемое количество различных спец-символов: при записи в SQL нужно предусмотреть их корректную обработку. Полное описание протокола обмена в наличии. Как в случае любого XML-там все предельно просто.
В случае неполучения ответа или превышения таймаута - отправил сообщение на электронку об ошибке синхронизации с
указанием причины.
2. Клиентская часть. Пункты самовывоза есть не везде - городов много, но все же далеко не все возможные.
Поэтому ввод названия города клиенту нужно упростить клиенту жизнь с помощью выпадающих подсказок, а именно:
на основании имеющейся у нас базы (SQL) формируется список городов, которые будем подсказывать пользователю.
Т.е. он в поле вводит букву "С", а мы уже предлагаем ему "самару, саранск, севастополь" (скажем чуть ниже поля - в столбик).
Клиент вводит вторую букву - "А" и остается Самара и Саранск и так до
победного конца: или он выберет из предлагаемых вариантов, либо введен
что-то вроде вроде "Зырянск-на-Оби;%№*?:"
В этом случае конечно необходимо предусмотреть фильтрацию ввода от различных коварных
спецсимволов и цифр - клиент может вводить все что угодно, но это не должно ломать работу формы.
Когда клиент ввел название и нажал найти:
выдаем ему результат в DIV который находится под формой. Если клиент ищет
повторно другое название - стираем старый результат и выводим новый без
перезагрузки страницы.
Вот и все.
Обладающие всем набором необходимых компетенций - welcome.