Возврат "извините, результатов не найдено" при поиске в базе данных MySQL - PullRequest
2 голосов
/ 16 августа 2011

В настоящее время у меня есть функция поиска по базе знаний, которая отфильтровывает массив общих слов (a, способны, о и т. Д.), Чтобы они не отправлялись в запросе.К сожалению, когда кто-то ищет только одно из этих распространенных слов, он ничего не возвращает (тогда как когда он не отфильтрован и не запрашивает, у меня есть код для возврата «Извините, результатов не найдено» и ведение журнала поиска в базе данных).

Мне нужно сделать то же самое для отфильтрованных слов, если они найдены и результаты не найдены, но я не уверен, что это лучший способ сделать это.Ниже приведен отфильтрованный код.

//Defines common words to be striped.
$commonWords = array('a','able', etc)
//Strips common words from being included as a search term
$searchterm = preg_replace("/\b(".implode('|',$commonWords).")\b/i",'',$searchterm);

if(mysql_num_rows($result) == 0) {
echo "<img src=\"images/oops.png\"> Sorry, no results found.  <br /><br /><div id=\"custformSubmit\">Chat Now</div>";
//Records missing search terms in a database
mysql_query("INSERT INTO quer (IP, Query) VALUES ('$ip','$search')") or die(mysql_error());;

Я понимаю, что if (mysql_num_rows ($ result) == 0) не работает, потому что на самом деле ничего не ищется при отправке, но я не уверен в лучшемспособ исправить это.

Редактировать: Кроме того, div id 'custformSubmit' вызывает окно чата, чтобы пообщаться с нужным представителем.

Ответы [ 2 ]

1 голос
/ 16 августа 2011

Вы должны обрезать строку после того, как она отфильтрована, и проверить, если (пусто ($ Filterstring)), тогда не выполнять SQL-запрос и печатать сообщение, так как ничего не найдено.

Также быстрее использовать str_replace, чем preg, если у вас нет сложного шаблона. Вы можете установить ваши общие слова в качестве ключей массива и замену ('') в качестве значения, а затем сделать что-то вроде str_replace (array_keys ($ filter), $ filter, $ string)

0 голосов
/ 16 августа 2011

Вы можете использовать счетчик замен preg_replace (см. документацию ) и вывести Sorry, no results found., если количество замен == количество слов в исходном запросе.

Возможно, есть лучший способ сделать это, но я могу предложить это с помощью предоставленного кода.

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