Сопоставить ближайшую строку с определенной строкой

Какой алгоритм поиска я должен использовать, чтобы дать результаты, когда пользователь ищет название книги?

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

В первом случае проще просто найти строку. Мне нужно, как решить второй случай, который использует большинство сайтов.

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

$title=isset($_GET['title'])?$_GET['title']:NULL;
//$code=isset($_GET['code'])?$_GET['code']:NULL;
$class=isset($_GET['class'])?$_GET['class']:NULL;
$cat=isset($_GET['category'])?$_GET['category']:NULL;
if(isset($title))
$qry="select * from books where quantity>0 and title='$title' ";
else{
$qry="select * from books where quantity>0 ";
if(isset($class)) $qry.=" and class='$class' ";
if(isset($cat))   $qry.=" and category='$cat' ";
}

-2

Решение

Ну, во-первых, я бы рекомендовал использовать подготовленные операторы, чтобы избежать внедрения SQL через ваш текущий код, но использование оператора LIKE в SQL должно работать во втором случае.

+ Изменить

`select * from books where quantity > 0 and title = '$title'`

в

`select * from books where quantity > 0 and title LIKE '%$title%'`

Что это делает, он проверяет наличие пропущенных букв вокруг слова. Таким образом, если бы заголовок был равен «кролик», то и «Белый кролик», и «Кролик», и «Кролик» были бы результатами.

постскриптум пробел ничего не стоит

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]