2016-01-23 35 views
0

我想建立一個簡單的自動建議輸入欄,連接到MySql數據庫並檢索數據。我遇到的問題是,當我輸入我知道存在於數據庫中的對象的名稱時,文本欄不會返回任何結果,而只是向我提供一個空白的下拉框。建設自動建議文本框時PHP和Javascript問題

最好的我可以告訴,這個問題與在代碼的PHP部分中使用的JavaScript有關。不幸的是,我似乎無法弄清楚它爲什麼會造成問題。

<?php 
    mysql_connect("host", "user", "passsword") OR DIE ('Unable to connect to database! Please try again later.'); 
    mysql_select_db('DBName'); 
    $query = 'SELECT Device_type FROM Device'; 
    $result = mysql_query($query); 
    $counter = 0; 
    echo"<script type='text/javascript'>"; 
    echo"this.nameArray = new Array()"; 
    if($result) { 
     while($row = mysql_fetch_array($result)) { 
      echo("this.nameArray" .$row ['Device_type'] . "';"); 
      $counter += 1; 
     } 
    } 
    echo("</script>"); 
    ?> 

當我拿出echo"<script type='text/javascript'>";echo"this.nameArray = new Array()";然後加載頁面時,它顯示在頁面頂部的DEVICE_TYPE內容。這顯然不是我想要的,但它證明數據庫連接至少可以正確設置。由於這個PHP塊是指一些JavaScript,我也將證明它所指的功能。

function doSuggestions(text) { 
     var input = text; 
     //window.alert(text); 
     var inputLength = input.toString().length; 
     var code = ""; 
     var counter = 0; 
     while(counter < this.nameArray.length) { 
      var x = this.nameArray[counter]; // avoids retyping this code a bunch of times 
      if(x.substr(0, inputLength).toLowerCase() == input.toLowerCase()) { 
       code += "<div id='" + x + "'onmouseover='changeBG(this.id);' onMouseOut='changeBG(this.id);' onclick='doSelection(this.innerHTML)'>" + x + "</div>"; 
      } 
      counter += 1; 
     } 
     if(code == "") { 
      outClick(); 
     } 
     document.getElementById('divSuggestions').innerHTML = code; 
     document.getElementById('divSuggestions').style.overflow='auto'; 
    } 

任何有關爲什麼建議框在開始輸入時不提供建議的建議?如果我在文本框中輸入A,建議框應該會顯示數據庫中以A開頭的所有項目。

+0

檢查了這一點https://jqueryui.com/autocomplete/它可以幫助你 – guradio

+1

它可能會偷偷告訴你不要使用'mysql_ *'再和那一個早晨,你會醒來,發現你的網站是不是由於嘲弄或貶低而再次工作。 – Rasclatt

+0

@guradio我已經看到了這一點,並辯論朝這個方向發展,但我正在尋找可以連接到數據庫的東西,因爲我可能需要將大塊數據上傳到後端。 – Jcmoney1010

回答

0

存在一些錯誤在你的js字符串

`echo"var nameArray = new Array()";` 
`echo("nameArray.push('" .$row ['Device_type'] . "');");` 

這樣你會推裝置類型分爲nameArray變種。

+0

嗯,按照建議進行了更改,但仍然存在相同的問題。 – Jcmoney1010

+0

從'while(counter

+0

仍然具有相同的結果。我從兩條線上刪除它。 – Jcmoney1010