jquery autocomplete sql查询列表基于另一个输入值

时间:2012-04-02 18:40:40

标签: php jquery sql forms input

我的表单中有两个自动填充字段。我使用以下代码填充第一个字段的列表...

$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文件。

1 个答案:

答案 0 :(得分:3)

如果您想根据SQL查询的结果自动完成而不必离开页面,您可能需要查看AJAX和JSON。

另外,请使用PDO而不是mysql_ *函数与DBMS与PHP连接。