2016-07-04 3 views
2

にこれは、MySQLのDB connection.phpデータをフェッチして渡す方法。フォーム応答CustomerNameのonkeyupのまたはJSONのKeyDownとPHP

<?php 
    $conn = new mysqli("localhost", 'root', "", "laravel"); 
    $query = mysqli_query($conn,"select * from customers"); 

    while ($result2=mysqli_fetch_assoc($query)) { 
     $data[] = $result2['customername']; 
    } 
    echo json_encode($data); 
?> 

JSONはonkeyupの応答または全体の出力を表示しているKEYDOWNされません。しかし、私は表示するために現在の関連する一致した名前だけを表示したい。私はjsonとajaxに新しい人でした。私はajaxとjsonの両方が同じように反応すると思います。

<form action=""> 
    First name: <input type="text" id="txt1" onkeyup="showHint(this.value)"> 
    </form> 

    <p>Suggestions: <span id="txtHint"></span></p> 

    <script> 
    function showHint(str) { 
     var xhttp; 
     if (str.length == 0) { 
     document.getElementById("txtHint").innerHTML = ""; 
     return; 
     } 
     xhttp = new XMLHttpRequest(); 
     xhttp.onreadystatechange = function() { 
     if (xhttp.readyState == 4 && xhttp.status == 200) { 
      document.getElementById("txtHint").innerHTML = xhttp.responseText; 
     } 
     }; 
     xhttp.open("GET", "connection.php?q="+str, true); 
     xhttp.send(); 
    } 
</script>  

お寄せいただきありがとうございます。すべての提案は大歓迎です。

キーアップやキーダウン時のフォームとレスポンスへのパスと、それに関連する提案は、カスタム名が表示されるはずです。私はJSONとjavascriptとサンプルサイトを初めて使い慣れています。前もって感謝します。すべての提案は大歓迎です。

答えて

0

いくつかのオプションがあります。


一つは、あなたが"WHERE name LIKE %" . $input . "%'";にSQLクエリにテキストボックス入力を追加することによって、AJAX呼び出し内のすべてのデータを再引くということですが、これは速度の点でネットワークトラフィックに高価になります。あなたが示された結果をフィルタリングするためにはJavaScript内正規表現を使用して、その後、行ったよう


別のオプションと私は選ぶだろう一つは、SELECTの名前のすべてを取得しています。

ここでは、正規表現を使用する際の適切なリンクです。 https://developer.mozilla.org/en/docs/Web/JavaScript/Guide/Regular_Expressions


編集:私は今テストするための手段を持っていないとして、これの どれがテストされていません。

最初の例では、私はあなたがGET経由でクエリを渡していると仮定し、次のようにそのため、あなたのPHPファイルにあなたがあなたのコードを変更するつもりです:

<?php 
    // Your DB connection 
    $conn = new mysqli("localhost", 'root', "", "laravel"); 
    // Initialise the query string 
    $qString = "SELECT * FROM customers"; 
    // Providing a parameter is sent in the GET request to the PHP page, look for names 
    // containing that string 
    isset($_GET['q']) ? $qString .= " WHERE customername LIKE '%" . $_GET['q'] . "%'" : ""; 

    $qHandler = mysqli_query($conn, $qString); 

    while ($qResult = mysqli_fetch_assoc($qHandler)) { 
     $data[] = $qResult['customername']; 
    } 
    echo json_encode($data); 
?> 

だから、要求が経由して行われたときshowHint(str)の呼び出しでは、strを%likeワイルドカードを使って 'like'ステートメントのクエリに追加します。あなたはテキストボックスに 'art'を入れて、 'bART'、 'marther'などの名前を返します。

+0

答えを掘り起こしてください – JBK

+0

@JBK上記のコメントを展開しました。 – JokerDan

+0

ありがとうございました。あなたのコードで修正した後、私のコードが動作しています。おかげでたくさんMr. JokerDan – JBK

関連する問題