2015-08-04 2 views
0

У меня есть рабочий сценарий автозаполнения, который ссылается на мою базу данных, но я уверен, как сортировать результаты.Сортировка результатов автозаполнения jQuery

Мой стол имеет 4 столбца: ID, местоположение, слизняк, население. Сама таблица имеет около 1000 записей.

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

Index.php:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
<title>Autocomplete using PHP/MySQL and jQuery</title> 
<link rel="stylesheet" href="css/style.css" /> 
<script type="text/javascript" src="js/jquery.min.js"></script> 
<script type="text/javascript" src="js/script.js"></script> 
</head> 


<body> 
    <div class="container"> 
     <div class="header"> 

     </div><!-- header --> 
     <h1 class="main_title">Autocomplete using PHP/MySQL and jQuery</h1> 
     <div class="content"> 
      <form> 
       <div class="label_div">Type a keyword : </div> 
       <div class="input_container"> 
        <input type="text" id="slug" onkeyup="autocomplet2()"> 
        <ul id="list_id"></ul> 
       </div> 
      </form> 
     </div><!-- content -->  
     <div class="footer"> 
      Powered by Jason's Fingers</a> 
     </div><!-- footer --> 
    </div><!-- container --> 
</body> 
</html> 

script.js:

// autocomplete : this function will be executed every time we change the text 
function autocomplet2() { 
    var min_length = 3; // min caracters to display the autocomplete 
    var keyword = $('#slug').val(); 
    if (keyword.length >= min_length) { 
     $.ajax({ 
      url: 'ajax_refresh.php', 
      type: 'POST', 
      data: {keyword:keyword}, 
      success:function(data){ 
       $('#list_id').show(); 
       $('#list_id').html(data); 
      } 
     }); 
    } else { 
     $('#list_id').hide(); 
    } 
} 

// set_item : this function will be executed when we select an item 
function set_item(item) { 
    // Changes input to the full name on selecting 
    $('#slug').val(item); 
    // Hides list after selection from list 
    $('#list_id').hide(); 
} 

ajax_refresh.php:

<?php 
// PDO connect ********* 



function connect() { 
    return new PDO('mysql:host=localhost;dbname=wallettest', 'root', 'butthead', array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8")); 
} 

$pdo = connect(); 
$keyword = '%'.$_POST['keyword'].'%'; 
$sql = "SELECT * FROM population WHERE slug LIKE (:keyword) ORDER BY id ASC LIMIT 0, 10"; 
$query = $pdo->prepare($sql); 
$query->bindParam(':keyword', $keyword, PDO::PARAM_STR); 
$query->execute(); 
$list = $query->fetchAll(); 
foreach ($list as $rs) { 
    // put in bold the written text 
    $slug = str_replace($_POST['keyword'], '<b>'.$_POST['keyword'].'</b>', $rs['slug']); 
    // add new option 
    echo '<li onclick="set_item(\''.str_replace("'", "\'", $rs['slug']).'\')">'.$slug.'</li>'; 
} 


?> 

ответ

1

Вы можете установить "ORDER BY" часть $sql быть:

...ORDER BY population DESC LIMIT 0, 10" 
1

Фигурные его, в этой строке:

$ sql = "SELECT * FROM страна WHERE country_name LI KE (: ключевое слово) ORDER BY country_id ASC LIMIT 0, 10 ";

Изменение заказа по COUNTRY_ID населению

+0

Ну, кажется, ты меня опередил. Тем не менее, «ASC» сначала даст вам самое низкое население. –

+0

Спасибо за это, я почесывал голову именно тогда, как выяснить, какой синтаксис он будет для уменьшения порядка, знаете ли вы, где я могу посмотреть на различные команды для этого? – Snorlax

+0

Документация может оказать большую помощь. Для 'ORDER BY' вы можете проверить это [link] (https://dev.mysql.com/doc/refman/5.1/en/order-by-optimization.html). –

Смежные вопросы