0

答えが見つかることを願っています。

レコードのリストといくつかの検索フィールドがある PHP で Web アプリを作成します。検索フィールドの 1 つに「顧客番号」があります。顧客番号はローカル データベース (MySQL) に保存されます。顧客番号を検索すると、それに応じたデータベースの結果行 => ロジックが得られます。

ここで、jQuery UI Autocomplete を使用して、この検索フィールドの拡張機能を構築したいと考えています。

私がしたいこと:

ユーザーが検索フィールド「customernumber」でcustomerNAMEを検索できるようにしたいのですが、オートコンプリートは正しい顧客番号を値に与えます。

顧客名は、顧客番号とともに外部の ODBC データベースに保存されます。

私がすでに行ったこと:

外部の ODBC データベースからすべての名前と番号を取得しようとしましたが、次のようなリストが得られました。

customername: somename1 
customernumber: number1

customername: somename2
customernumber: number2

customername: somename3 
customernumber: number3

... and so on

このリストでも ajax 呼び出しでオートコンプリートを行うと、まったく機能しません。

誰かが私を助けてくれますか!? 何度も検索した後、インターネット上またはそれに近いもので答えを見つけることができませんでした.

私は本当に素晴らしいでしょう!ありがとう!

私がこれまでに得たものの私の例:

jQuery スクリプト:

<script
    $(function() {
        function log( message ) {
            $( "<div/>" ).text( message ).prependTo( "#log" );
            $( "#log" ).scrollTop( 0 );
        }

        $( "#customer" ).autocomplete({
            source: function( request, response ) {
                $.ajax({
                    url: "customers.php",
                    dataType: "json",
                    success: function( data ) {
                        response( function( item ) {
                            return {
                                label: item.customername,
                                value: item.customernumber
                            }
                        });
                    }
                });
            },
            minLength: 3,
            select: function( event, ui ) {
                log( ui.item ?
                    "Selected: " + ui.item.label :
                    "Nothing selected, input was " + this.value);
            }
        });
    });
</script>

入力 HTML:

<div class="ui-widget">
    <label for="customer">Search</label>
    <input id="customer" />
</div>

customers.php の SQL クエリ

$connection = odbc_connect('host', 'username', 'password') 
              or die('Connection failed!');

$sql = "SELECT 'customername', 'customernumber' FROM 'database.table'";

$results = odbc_exec($connection, $sql);

while($myRow = odbc_fetch_array($results)){
    $rows[] = $myRow;
};

foreach($rows as $row) {
    foreach($row as $key => $value) {
        echo $key . ': '. $value . '<br/>';
    }
};

明確にするために

検索ボックスに customerNAME と入力し、customerNUMBER を値として取得したいと考えています。

4

1 に答える 1

1

適切な形式でデータを返す必要があります。

 while($r = odbc_fetch_array($results))
    $rows[] = array("label" => $r[0], "value" => $r[1]);    
 echo json_encode($rows);

 $("#search").autocomplete({  
        //define callback to format results  
        source: function(request, response){  
            //pass request to server  
            $.getJSON("query.php?term=" + request.term, function(data) {  
               response(data);
            });  
        });  
    });

その他のオプションについては、 jQuery UIのドキュメントを参照してください。

現在のソリューションの問題を編集

  • odbc_fetch_array は、一部の RDBS で列名のない値を返す場合があります (デバッグには print_r を使用します)。

    名前番号 ボブ 123

になる

Array
    (
        [0] => "Bob"
        [1] => 123
    )
  • JSON 出力は有効ではありません (firebug を使用してデバッグします)。現在、この例の出力は次のようになります。

    0:「ボブ」 1:123

于 2012-10-05T09:27:44.787 に答える