2015-04-04 2 views
11

Как вы заметите, я ученый-ученый, а не программист/разработчик.Удаленная загрузка данных из SQL с помощью Selectize.js

В SQL у меня есть база данных с десятью тысячами имен. Мне удалось реализовать инструмент selectize.js на моем сайте загрузки twitter, но он загружает способ замедления. На странице справки из Selectize.js, https://github.com/brianreavis/selectize.js/blob/master/docs/usage.md, я прочитал, что можно загружать параметры «на лету», когда пользователь что-то вводит.

Но из примеров я не могу узнать, как это сделать из таблицы SQL. Может ли кто-нибудь писать в псевдокоде, что мне нужно делать?

Короче говоря, когда пользователь вводит некоторые имена, я хочу, чтобы скрипт нашел в таблице SQL эти имена и сделал выделение html-тегов, вместо того, чтобы загружать каждое имя уже в начале.

Это код, у меня есть на данный момент:

  <div class="control-group"> 
       <select id="select-yourself" class="demo-default" placeholder="Type your name..."> 
        <option value="">Type your name ...</option> 
         <?php 
          for($row = 0; $row < sizeof($race_table); $row++){ 
          echo("<option value=".$row.">". 
          $race_table[$row]['Name']."</option>"); 
         } 
         ?> 
       </select> 
      </div> 
      <script> 
      $('#select-yourself').selectize({ 
       create: false, 
       maxOptions: 100, 
       //sortField: { 
        //field: 'text', 
        //direction: 'asc' 
       //}, 
       dropdownParent: 'body' 
      }); 

ответ

18

Вы могли бы попробовать что-то вроде:

HTML:

<div class="control-group"> 
    <select id="select-yourself" class="demo-default" placeholder="Type your name..."> 
    <option value="">Type your name ...</option> 
    </select> 
</div> 

JavaScript:

$('#select-yourself').selectize({ 
    valueField: 'name', 
    labelField: 'name', 
    searchField: 'name', 
    options: [], 
    create: false, 
    load: function(query, callback) { 
     if (!query.length) return callback(); 
     $.ajax({ 
      url: 'http://127.0.0.1:8080/getnames.php', 
      type: 'GET', 
      dataType: 'json', 
      data: { 
       name: query, 
      }, 
      error: function() { 
       callback(); 
      }, 
      success: function(res) { 
       callback(res); 
      } 
     }); 
    }); 

PHP file (getnames.php) используется для ly для создания json-файла из данных базы данных mysql:

<?php 
// parameters from URL 
$urlparam_name = $_GET['name'] ."%"; 

// connect to the database 
include("mysql.inc"); 
$link = mysqli_connect($host, $user, $pass, $db) or die("Error " .mysqli_error($link)); 

$sql = " 
SELECT `race_table`.`name` 
FROM `race_table` 
WHERE `race_table`.`name` like '$urlparam_name' 
GROUP BY `race_table`.`name` ASC 
"; 

$result = mysqli_query($link, $sql) or die("Error " .mysqli_error($link)); 
$rows = array(); 
while ($row = mysqli_fetch_assoc($result)) 
{ 
    extract($row); 
    $rows[] = "{ \"name\": \"$name\" }"; 
} 

// output to the browser 
header('Content-Type: text/javascript; charset=UTF-8'); 
echo "[\n" .join(",\n", $rows) ."\n]"; 
?> 
+0

Является ли это обычной практикой или я что-то наблюдаю? –

+0

Это обычная практика. Вы можете найти демоверсии автора selectize.js на этой странице [1]. Обратите внимание на примеры «Remote Source - Github» и «Remote Source - Rotten Tomatoes». [1]: http://brianreavis.github.io/selectize.js/ – alemv

+0

Да, но эти примеры используют API другого веб-сайта, а не базу данных SQL ... –