Игорь Николаевич: а что там сложного может быть?
слушаем input,
при изменении, отправляем значение на сервер.
на сервере данные проверяем на наличие всяких штук вроде sql инъекций, если все ок, делаем SELECT LIKE %значение% или SELECT LIKE значение%
возвращаем полученное обратно,
показываем на фронтенде.
если список маленький (условно, штук так с 1000 городов), можно его сразу грузить как инлайн код в странице или грузить отдельным js файлом.
тогда и к базе обращаться не нужно, все на клиенте делать быстрее будет.
Игорь Николаевич: если у вас в статье описано именно в стиле "SELECT LIKE...", то это хорошо, что Хабр не пропустил. Это из разряда вредных советов нагружать БД для такой простой задачи.
Вот если бы описали ту же реализацию, но с использованием, например, движка Sphinx с кэшированием результатов, то было бы в разы полезнее.