SQL-заплатка: поиск по алфавиту

Опубликовано Опубликовано в рубрике Easy Patch, PHP, SQL

Ранее я описывал возможность создания алфавитного указателя из ассоциативного массива, полученного в результате работы sql-запроса. Но что если нам необходимо выводить только записи, начинающиеся на определенную букву?
Итак, начнем со статики. На определенной странице у нас есть список-алфавит, каждая буква которого является ссылкой вида

href="/?letter=<ВЫБРАННАЯ БУКВА>"

При клике на ссылку необходимо показывать только те записи БД, имя которых начинается на заданную букву. Поэтому для начала проверим наличие GET-переменной.

if (isset($_GET['letter']))
{
   //описываем условия
}

Далее учитываем, что соединение с базой данной уже установлено. Нам поможет встроенная функция языка SQL : LOCATE(). Эта функция возвращает позицию первого вхождения заданной строки в строке поиска и имеет следующий синтаксис:

locate('СТРОКА_ПОИСКА', ТАБЛИЦА_ПОИСКА)

Соответственно, если мы ищем записи по первой букве в них, то функция должна возвращать значение 1. Сформируем простенький запрос на вывод всех данных для записей, чье имя (`name`) начинается на букву A(английскую):

SELECT * FROM `orders` WHERE LOCATE( 'A', `name` ) =1

Хочу заметить, что функция очень и очень шустрая. Не говоря уже о том, что она помогает нам не выгружать весь массив записей, а сразу же получать нужную информацию!

За сим все!

Безошибочного Вам кода!

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *