由数据库填充的自动填充表单?

时间:2011-05-18 15:16:02

标签: php jquery database autocomplete

我目前正在开发一个项目,我需要在其中使用自动填充表单从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>';
?>

任何帮助都会很棒!

3 个答案:

答案 0 :(得分:2)

请遵循这篇写得很好的教程

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

答案 1 :(得分:2)

我最近使用此库进行自动完成 - 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>
<?}?>

答案 2 :(得分:1)

JQuery UI包含自动完成功能,但您仍需要编写PHP脚本以返回要通过AJAX完成添加到控件的信息。如果您在PHP中知道如何连接到数据库,查询它并返回结果列表 - 那么您将没有遇到任何问题。 JQuery使AJAX非常简单。

取决于您的字段/数据集的复杂程度 - 并且假设它没有数百万的无索引记录,我将满足于从以下位置自动完成:

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

所以,如果你正在寻找食物......那么查询“CA”会抽出CArrot和CAbbage和CAuliflower。如果您在LIKE的开头添加了%,则可以获得包含查询的结果,而不是刚刚开始。

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

查看Autocomplete demos on JQuery UI