2012-04-02 87 views
2

我的表單中有兩個自動填充字段。我用下面的代碼填充的第一個字段的列表...基於另一個輸入值的jquery自動完成sql查詢列表

$result = mysql_query("SELECT * FROM exercise_strength"); 
$arr_autoCompleteExerciseStr=array(); 
$s=0; 
while($row = mysql_fetch_array($result)){ 
$autoCompleteExerciseStr = "\"".ucfirst($row['exercise'])."\", "; 
$arr_autoCompleteExerciseStr[$s] = $autoCompleteExerciseStr; 
$s++; 
} 

和...

$(function() { 
    var availableTags = [ 
     <?php for($k=0; $k<sizeof($arr_autoCompleteExerciseStr); $k++) {echo $arr_autoCompleteExerciseStr[$k]; } ?> 
    ]; 
    $("#inputExercise").autocomplete({ 
     source: availableTags, 
     minLength: 0 
    }); 
    $("#inputExercise").focus(function(){   
     $(this).autocomplete("search"); 
    }); 
}); 

相同的代碼具有不同的mysql_query用於其他領域。我想要做的是根據第一個輸入的內容更改第二個字段的列表。例如,如果用戶在第一個字段中鍵入Chest,則在我的sql數據庫中選擇的第二個字段中會顯示相關練習的列表。

這樣做的最好方法是什麼?

如果我也不會離開這個頁面,我寧願,引起那麼用戶必須重新填充表格的其餘部分..

請幫幫忙! :)

- 更新 -

基於你對JSON的建議我的代碼現在看起來是這樣。

腳本:

$(document).ready(function(){ 
    $.post('json_exercise.php', { /**/ }, showExercise, "text"); 
}); 

function showExercise(res){ 
    var list = JSON.parse(res); 
    $("#inputExercise").autocomplete({ 
     source: list, 
     minLength: 0 
    }); 
    $("#inputExercise").focus(function(){   
     $(this).autocomplete("search"); 
    }); 
} 

PHP文件:

$con = mysql_connect(***); 
if (!$con) {die('Could not connect: ' . mysql_error());} 
mysql_select_db("test", $con); 

$result = mysql_query("SELECT * FROM exercise_strength"); 
$i = 0; 
while($row = mysql_fetch_array($result, MYSQL_ASSOC)) 
    { 
     //add the row to the $chat array at specific index of $i 
     $exercise[$i] = $row['exercise']; 
     $i += 1; 
    } 
echo json_encode($exercise); 

現在我只需要改變PHP提起基於什麼在第一場自動完成選擇。

回答

3

如果您希望基於SQL查詢的結果自動完成而不必離開頁面,那麼您可能需要查看AJAX和JSON。

另外,請使用PDO而不是mysql_ *函數來與DBMS的PHP接口。

+0

謝謝,我用一些新代碼更新了我的問題。你有什麼意見嗎? – Virik 2012-04-03 06:27:47

相關問題