возвращать строки mysql в поиске при вводе php с использованием jquery и кэширования - PullRequest
0 голосов
/ 08 августа 2011

Я пытаюсь работать над сценарием поиска, который извлекает информацию о том, что вы ищете, и предоставляет топ-хиты так же, как Facebook делает при поиске имени. Я посмотрел на автозаполнение JQuery, но я не думаю, что это то, что мне нужно. Какой самый эффективный способ сделать это? Есть ли способ кеширования? Я знаю, как это сделать, как при сужении поиска каждый раз, когда пользователь печатает, но для этого нужно, чтобы я перебирал исходный возвращаемый результат, и я не знаю, как запросить кэшированный результат mysql.

Любые подсказки были бы удивительны

Ответы [ 2 ]

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

Единственный способ кэшировать результат mysql - это либо поместить его во временную таблицу, либо сохранить в jQuery.Самый простой способ сохранить результат (при условии, что вы преобразовали его в массив) - это использовать JSON.В вашем PHP-скрипте просто сделайте следующее:

$result = $db->query('select * from table');//Assume the query function converts the result into an array
echo json_encode($result);

Для этого json_encode($result); преобразует ваш массив в JSON, который можно отправить обратно в браузер, где он легко (и автоматически) конвертируется обратно вмассив.Теперь в jQuery вы можете использовать:

var cachedVar;
$.ajax({
   url: 'page.php', 
   dataType: 'json', 
   data: {'data':'here'}, 
   type: 'POST', 
   success: function(data) { cachedVar = data; }
});

Часть этого кода cachedVar = data; сохранит массив в cachedVar.Теперь вы можете обращаться к массиву, как обычно в любом месте вашего скрипта, и результаты «кэшируются».

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

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

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