Удаленная загрузка данных из SQL с помощью Selectize.js

Как вы заметите, я научный сотрудник, а не программист/разработчик.

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

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

Короче говоря, когда пользователь вводит некоторые имена, я хочу, чтобы script нашел в таблице 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'
            });

Ответ 1

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

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 файл (getnames.php) используется только для создания 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]";
?>