2016-07-04 30 views
2

這是MySQL數據庫connection.php如何獲取數據並通過。成形式和響應客戶名稱的onkeyup或KEYDOWN JSON和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>  

感謝您的建議。所有建議都歡迎。

如何傳遞給keyup或keydown的形式和響應以及相關的建議customername應該顯示出來。我是JSON,JavaScript和示例網站的新手。提前致謝。所有建議都歡迎。

回答

0

你有幾個選擇;


一個是你通過附加輸入SQL查詢的文本框在"WHERE name LIKE %" . $input . "%'";重新拉Ajax調用的所有數據,但是這將在速度的網絡流量方面是昂貴的。


另一種選擇和一個我會選擇,越來越所有的名字在SELECT,你所做的一切,然後使用JavaScript中的正則表達式過濾顯示的結果。

這是使用正則表達式的一個很好的鏈接。 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'語句中,並帶有%%通配符。因此,您在文本框中添加了「藝術」,它會返回名稱,如「bART」,「mARTher」等。

+0

請詳細說明您的答案 – JBK

+0

@JBK我已對上述註釋進行了擴展,希望這有助於您嗎? – JokerDan

+0

謝謝我的代碼在修改代碼後正在工作。非常感謝JokerDan先生 – JBK

相關問題