2010-01-25 5 views
0

Я разрабатываю веб-приложение и нуждаюсь в способе вытащить строки из базы данных MySQL и отображать их как выпадающие предложения, поскольку пользователь вводит данные в форму.jQuery Form Input Suggestation

Например, если пользователь ввел: «stac» приложение должно искать в БД и предоставлять такие предложения, как «stack» «stackoverflow». Я ищу что-то похожее на то, как много полей тегов здесь на Stack Overflow работают. Каков наилучший способ сделать это?

ответ

5

Использование PHP, это довольно просто.

Я бы использовал ключевое слово LIKE в SQL, чтобы найти соответствующие результаты.

Затем я проанализировал результаты в JSON, а затем вернул его клиенту.

Быстрый пример:

<?php 
    $_q = (isset($_POST[ 'q' ]) && !empty($_POST[ 'q' ])) ? $_POST[ 'q' ] : NULL; 
    if($_q === NULL) { 
     echo 'invalid querystring'; 
     exit; 
    } 

    //connect to the db.... 
    $set = $db->query('SELECT name FROM my_table WHERE name LIKE \'%' . $_q . '%\';'); 

    $json = array(); 
    while($result = $set->fetch_array()) { 
     $json[] = $result[ 'name' ]; 
    } 

    echo json_encode($json); 
?> 

JavaScript: (используя JQuery)

function getResults(str) { 
    $.ajax({ 
     url:'suggest.php'. 
     type:'POST', 
     data: 'q=' + str, 
     dataType: 'json', 
     success: function(json) { 
      //json is now an array, here's where you render the dropdown data. 
     } 
    }); 
} 

$('.suggest').keyup(function() { 
    getResults($(this).val()); 
}); 
+1

+1 для получения полного ответа – Michel

+0

@Michel, спасибо! –

+0

@Jacob_Relkin Спасибо! – crgwbr

1

Отъезд jQuery autocomplete plugin. При загрузке страницы или при вызове ajax вы создадите список строк, которые отображаются в примере, используя ваш серверный язык,