0

jquery オートコンプリート ウィジェットを呼び出す次のコードがあります。

$(function() {
        $( "#vendor_name" ).autocomplete({
        source: 'vendor_names.php',
        minLength: 3
})
});

私のvendor_names.phpファイルは次のようになります。

<?php
include("include/db_connect.php");

$query = "select VendorName from Vendor where VendorCancelDate is NULL order by 
VendorName";
$result = mssql_query($query);
while ( $record = mssql_fetch_array($result) ){
        $vendors[] = array('label' => $record['VendorName']);
}
echo json_encode($vendors);

?>

しかし、何かを入力すると、常にクエリ内のすべてが返されます。何か案は?

4

2 に答える 2

0

入力の値をスクリプトに渡します。

$(function() {
        var val = $( "#vendor_name" ).val();
        $( "#vendor_name" ).autocomplete({
        source: 'vendor_names.php?token=' + val,
        minLength: 3
   });
});

スクリプトによって返された結果をフィルタリングします。SQL インジェクションを避けるために、SQL を連結しない方法でこれを行う必要がありますが、例としては次のとおりです。

<?php
include("include/db_connect.php");
$val = $_GET["token"];
$query = "select VendorName from Vendor where VendorCancelDate is NULL and VendorName like '%". $val . "%' order by VendorName";
$result = mssql_query($query);
while ( $record = mssql_fetch_array($result) ){
        $vendors[] = array('label' => $record['VendorName']);
}
echo json_encode($vendors);

?>
于 2013-05-05T20:15:39.093 に答える
0

私の知る限り、ユーザーによる入力vendor_names.php?input=whateverを..に渡す必要
があり、クエリは
select VendorName from Vendor where VendorCancelDate is NULL and VendorName=%whatever%' order by VendorName

于 2013-05-05T20:16:57.757 に答える