2011-05-18 182 views
1

我目前正在一个项目中,我需要一个自动完成表单调用它从db文件中的信息。我看过很多关于jquery自动完成表单的教程,但我不知道如何调用db文件来填充列表。由数据库填充的自动填充表单?

我正在使用PHP。目前代码表示一个简单的下拉框,它调用db文件进行填充。

<?php 
    global $wpdb; 
    $depts = $wpdb->get_results("SELECT * FROM departments ORDER BY department_name ASC"); 
    echo '<select>'; 

    foreach($depts as $row) { 
     echo '<option name="select_dept" value="'.$row->department_id.'">'.$row->department_name.'</option>'; 
    } 
    echo '</select>'; 
?> 

任何帮助都会很棒!

回答

1

最近我已经使用这个库的自动完成 - http://www.devbridge.com/projects/autocomplete/jquery/ 所以这里是一个基于你的简短脚本:

<?php 

$query = isset($_GET['query']) ? $_GET['query'] : FALSE; 

if ($query) { 
    global $wpdb; 
    // escape values passed to db to avoid sql-injection 
    $depts = $wpdb->get_results("SELECT * FROM departments WHERE department_name LIKE '".$query."%' ORDER BY department_name ASC"); 

    $suggestions = array(); 
    $data = array(); 
    foreach($depts as $row) { 
     $suggestions[] = $row->department_name; 
     $data[] = $row->department_id; 
    } 
    $response = array(
     'query' => $query, 
     'suggestions' => $suggestions, 
     'data' => $data, 
    ); 
    echo json_encode($response); 
} else { 
?> 
<html> 
<body> 
<input type="text" name="" id="box" /> 

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js"></script> 
<script src="http://www.devbridge.com/projects/autocomplete/jquery/local/scripts/jquery.autocomplete.js"></script> 

<script type="text/javascript"> 

$(document).ready(function(){ 
    $('#box').autocomplete({ 
     serviceUrl:'/', 
     // callback function: 
     onSelect: function(value, data){ alert('You selected: ' + value + ', ' + data); }, 
    }); 
}); 
</script> 
</body> 
<html> 
<?}?> 
+0

死链接。请更新。 – 2018-02-26 17:46:12

1

请遵循本写得很好的教程

http://www.nodstrum.com/2007/09/19/autocompleter/

+0

感谢您的快速响应!不过,我正在寻找一种“便宜”的方法,只需在同一页面内使用javascript和php,并调用db文件即可。 – captainrad 2011-05-18 15:41:08

+0

@captainrad - 完全没问题 - 但我不知道多少“便宜”你会得到它 – Rob 2011-05-18 15:42:55

0

JQuery UI包括自动完成,尽管您仍然需要编写一个PHP脚本来返回要添加到控件中的信息,就像通过AJAX完成的那样。如果您在PHP中知道如何连接到数据库,查询它并返回结果列表 - 那么您将不会遇到任何问题。 JQuery使AJAX非常简单。

根据您的现场/数据集是多么复杂 - 并在数以百万计的没有索引的记录,假设它不是几百万,我将内容从自动完成:如果你正在寻找

SELECT thing WHERE thing LIKE '".$query."%' 

所以,说,食物...查询“CA”将拉出CArrot和CAbbage和花椰菜。如果你在LIKE的开头添加了一个%,你可以得到包含你的查询的结果,而不是仅仅从它开始。

用户点击的页面将包含JQuery部分,它既发送请求,又从结果创建自动完成效果,并且AJAX请求命中的非常简单的单独PHP脚本将返回潜在的“匹配”。

看看Autocomplete demos on JQuery UI