2014-01-21 47 views
6

我試圖在javascript中使用trie來創建一個非常簡單的自動完成函數。問題是我見過的例子,並試圖在JavaScript數組中使用預定義的列表。將PHP中的MYSQL結果插入到JavaScript數組中

例如。 var arrayObjects = ["Dog","Cat","House","Mouse"];

我想要做的是使用PHP檢索MYSQL結果並將它們放入一個javascript數組中。

這是我迄今爲止的PHP(JavaScript的是罰款只是需要填充數組):

<?php 
    $mysqli = new mysqli('SERVER', 'U/NAME', 'P/WORD', 'DB'); 
    if (!$mysqli) 
    { 
     die('Could not connect: ' . mysqli_error($mysqli)); 
    } 
    if ($stmt = $mysqli->prepare("SELECT category.name FROM category")) { 
     $stmt->bind_result($name); 
     $OK = $stmt->execute(); 
    } 
while($stmt->fetch()) 
    { 
    printf("%s, ", $name); 
    } 
?> 

然後我想使用類似mysql_fetch_array($名)基本上插入的每個值; (我知道這是不正確,但只是爲了證明你們什麼在我的頭上怎麼回事)

<script> -- this is the javascript part 
(function() { 
    <?php while $stmt=mysql_fetch_array($name)) 
    { 
     ?> 
     var arrayObjects = [<?php stmt($name) ?>]; 
    <?php } 
     ?> 

我可以檢索結果呼應了罰款,我可以操縱不MYSQL結果線索罰款,我做不到把他們放在一起,任何幫助將不勝感激,如果我走的是完全錯誤的方式,請讓我知道。

感謝,

亞當

+0

考慮使用Ajax調用並以JSON格式傳遞數據,而不是現在使用的這種跨語言的瘋狂 – Juribiyan

+0

謝謝,並不是說我害怕使用Ajax調用和傳遞JSON來學習新東西,可以直接從網上直接使用自動完成功能,但我認爲自己可以自己去看看,就像我在幾年前做過Red Black和Radix Tress一樣,但他們都是java,自學PHP,所以只是堅持什麼我知道。交叉語言的瘋狂只在我腦海中;) –

回答

8

首先,有java之間存在非常大的差異和javascript :-) 現在,在這種情況下,您正在做的是循環訪問結果數組,並且每次打印出行var arrayObjects = [<?php stmt($name) ?>];。然而,這不會在你得到的PHP數組和一個javascript數組之間進行轉換。

自從你開始做這種方式,你可以這樣做:

<?php 
    //bind to $name 
    if ($stmt = $mysqli->prepare("SELECT category.name FROM category")) { 
     $stmt->bind_result($name); 
     $OK = $stmt->execute(); 
    } 
    //put all of the resulting names into a PHP array 
    $result_array = Array(); 
    while($stmt->fetch()) { 
     $result_array[] = $name; 
    } 
    //convert the PHP array into JSON format, so it works with javascript 
    $json_array = json_encode($result_array); 
?> 

<script> 
    //now put it into the javascript 
    var arrayObjects = <?php echo $json_array; ?> 
</script> 
+0

工作!輝煌!感謝堆隊友。我已經嘗試了幾次將結果放入一個PHP數組中,只是不知道有一個轉換函數可以放入JSON並傳遞給javascript!很好的例子。 –

+0

絕對精彩 - 這使一切成爲可能! – duhaime

3

使用json_encode把你的PHP數組轉換成有效的JavaScript對象。舉例來說,如果你有從你的數據庫導致PHP數組叫$array

var obj = "<?php echo json_encode($array); ?>"; 

您現在可以在你的JavaScript代碼使用obj

+0

謝謝,這是一個正確的方向 –

0

對於自動完成,你可以使用<datalist> tag。這是HTML5中的一個相對較新的功能(see support table),但存在polyfill。 在構建頁面時完成<option>標記,並在完成之後完成。

+0

謝謝,但不是我之後爲此,很高興知道以備將來參考。 –