Эту статью можно отнести как к теме Java Script, так и к теме связанной с работой файлов PHP. И каждый из этих языков имеет право конкурировать в данной статье, так как и по тому и по другому в приведенном примере будут выполняться свои сценарии.
Вначале я скажу пару слов об алгоритмах, а еще наверное точнее о хронологии, как все выполняется на страничке. А дальше уже буду объясняться более предметно по мере появления "трудных" мест, которые потребуют объяснений, либо покажутся особенно интересными.
Что на счет хронологии алгоритмов, то они здесь такие. У нас есть форма input, по факту любое вносимое изменение этой формы посредством оператора "onkeyup" вызывает функцию (возникает в момент отпускания нажатой клавиши). Функция, прежде всего, является запросом для вызова файла с сервера, по сути это AJAX, о котором уже была отдельная статья. Самое простое, что может этот самый AJAX это выводить скажем текст для HTML страничек или текстовые файлы, который по факту вывода уже будут обработаны следующей функцией на той же самой странице. О таком вызове данных и обработке я тоже писал. Однако там был можно сказать чистый Java Script, ведь текстовый файл уже обрабатывался последующими функциями все того же Java Script. В этот же раз речь пойдет о такой гибридной версии, когда вначале Java Script обращается к файлу PHP, а потом он отрабатывает свой сценарий и в конечном счете остается уже "обмылок" от того и другого языка.
Теперь приведу пример, потом код для Java Script
Пример
Так вот, на самом деле есть еще PHP файл, о котором говорил и что не является секретом. Адрес расположения файла для нашего случая можно увидеть в коде Java Script. Однако нормально просто так PHP не откроется, поэтому код для PHP я тоже приведу отдельно
1. Что же, если кратко на счет PHP, то получается так. Когда возникает запрос от Java Script, то в файле он идет для переменной ?q= прописанной в скрипте. Эту переменную подхватывает уже PHP строкой $q = $_REQUEST["q"];, то есть получаем опять же переменную q в PHP.
2. И вот тут начинаются условия для этой переменной, через оператор if. Если наша q на равна пустому месту "", что сродни onkeyup, то поехали!
3. strtolower все косит под одну гребенку, чтобы у нас не было проблем с верхним и нижним регистром при написании текста.
4. Далее переменной $len присваиваем длину нашего вводимого имени.
5. Перебираем массив из переменных $a c помощью оператора foreach. То есть смотрим что же больше всего подходит для нашего набираемого имени.
6. Потом сравниваем строку которую набрали с той переменной и выводим уже полную переменную, даже если стока не вся еще набрана.