使用Selectize.js从SQL加载远程数据

Kas*_*eek 12 selectize.js

正如您将注意到的,我是数据科学家,而不是程序员/开发人员.

在SQL中,我有一个包含数万个名称的数据库.我设法在我的twitter bootstrap网站上实现了selectize.js工具,但它加载了减速的方法.在Selectize.js的帮助页面上,https://github.com/brianreavis/selectize.js/blob/master/docs/usage.md,我读到当用户输入内容时可以动态加载选项.

但是从示例中我无法从SQL表中找到如何执行此操作.有人可以用伪代码写我必须做什么吗?

简而言之,当用户键入一些名称时,我希望脚本在SQL表中查找这些名称并生成select 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'
            });
Run Code Online (Sandbox Code Playgroud)

ale*_*emv 21

你可以尝试类似的东西:

HTML:

<div class="control-group">
  <select id="select-yourself" class="demo-default" placeholder="Type your name...">
    <option value="">Type your name ...</option>
  </select>
</div>
Run Code Online (Sandbox Code Playgroud)

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);
      }
    });
  }
});
Run Code Online (Sandbox Code Playgroud)

PHP文件(getnames.php)仅用于从mysql数据库数据创建json文件:

<?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]";
?>
Run Code Online (Sandbox Code Playgroud)

  • "另一个网站"只是从服务数据库中获取一些信息的一种方式.我的样本中的"网站"是"http://127.0.0.1:8080/",服务器端脚本语言是PHP,数据库是MySQL.你的网址会有所不同,这取决于你的网站域名和结构,你用来获得json结构的语言(PHP,Java,Perl,ASP.NET,Python,Ruby甚至CG,C++中的C++等)数据库中的数据等 (3认同)