2011-11-26 50 views
0

我試圖在網頁中創建幾個自動填充字段。我有2個工作,一個使用本地數組作爲源,另一個使用名爲search.php的頁面,但使用search.php的頁面無法正常工作。jQuery UI - 將源代碼更改爲MySQL數據

下面是基本的網頁代碼:

<!DOCTYPE html> 
<html lang="en"> 
<head> 
    <meta charset="utf-8"> 
    <title>jQuery UI Autocomplete - Remote datasource</title> 
    <link rel="stylesheet" href="../../themes/base/jquery.ui.all.css"> 
    <script src="../../jquery-1.6.2.js"></script> 
    <script src="../../ui/jquery.ui.core.js"></script> 
    <script src="../../ui/jquery.ui.widget.js"></script> 
    <script src="../../ui/jquery.ui.position.js"></script> 
    <script src="../../ui/jquery.ui.autocomplete.js"></script> 
    <link rel="stylesheet" href="../demos.css"> 
    <style> 
    .ui-autocomplete-loading { background: white url('images/ui-anim_basic_16x16.gif') right center no-repeat; } 
    </style> 
    <script type="text/javascript"> 

$(function() { 

     var availableTags = ["c++", "java", "php", "coldfusion", "javascript", "asp", "ruby", "python", "c", "scala", "groovy", "haskell", "perl"]; 

     $("#tags").autocomplete({ 

      source: availableTags 

     }); 

    }); 


$(function() { 

     var availableTags = ["c++", "java", "php", "coldfusion", "javascript", "asp", "ruby", "python", "c", "scala", "groovy", "haskell", "perl"]; 

     $("#tags2").autocomplete({ 

      source: "search2.php", 
      minLength: 3 

     }); 

    }); 


    </script> 



    <input id="tags" /> 

    <input id="tags2" /> 




</body> 
</html> 

這裏是的search.php頁面代碼

<?php 

    // PHP5 Implementation - uses MySQLi. 
    // mysqli('localhost', 'yourUsername', 'yourPassword', 'yourDatabase'); 
    $db = new mysqli(localhost', 'username' ,'password', 'database_name'); 

    if(!$db) { 
     // Show error if we cannot connect. 
     echo 'ERROR: Could not connect to the database.'; 
    } 


$term = $_GET['term']; 

$result = $db->query("SELECT registeredName FROM names WHERE registeredName LIKE '%".$term."%' "); 


$array = array(); 

while ($data = mysql_fetch_array($result)) 
{ 
    $row_array['id'] = $data['id']; 
    $row_array['value'] = "$data[value]"; 

    array_push($array, $row_array); 
} 

echo json_encode($array); 


?> 

任何意見,將不勝感激

回答

0

Staggan,

在php文件中,你正在創建一個由ID和值fr組成的多維數組om你的數據庫表。在上面的引用硬編碼數組的自動完成中,其單維(單列)使我相信自動完成可能無法在第二種情況下處理多維數組。

試着把php列表中的數組列出來,然後用值(我假設它是真正的自動完成電位所在的位置)填充並返回該數組。

看看是否有幫助。

羅斯

更新 - Staggan - 的代碼:

$row_array['value'] = "$data[value]";  

應該是: $ row_array [ '值'] = $數據[ '值'];

我的猜測是PHP給你一個錯誤,你可以在你的http_d的error_log中查看錯誤,並且你的error_reporting級別是這樣的,它在json中沒有返回任何東西,因此不會爲你填充自動完成數組。改變這一點,讓我知道。

[R

+0

感謝羅斯......但沒有喜悅... – Staggan

+0

Staggan - 也是在你的PHP,你分配row_array [ '值'] - 這個PHP是錯誤的。請參閱上文,瞭解它應該是什麼.. – Ross

+0

在旁註中 - 您應該使用mysqli或PDO使該db查詢參數化,以便它不會獲取由黑客注入的sql,如果此操作將在面向公衆的機器上。在使用它來形成查詢之前,您還應該對$ _GET參數進行輸入驗證。 – Ross