你会注意到,我是一个数据科学家,而不是一个程序员/开发人员.
在sql中,我有一个具有数万个名称的数据库.我设法在我的twitter bootstrap网站中实现了selectize.js工具,但它加载了缓慢的方式.在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' });
解决方法
你可以尝试一下:
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)仅用于从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]"; ?>