JQuery автозаполнение списка запросов SQL на основе другого входного значения - PullRequest
2 голосов
/ 02 апреля 2012

В моей форме есть два поля автозаполнения.Я заполняю список первого поля, используя следующий код ...

$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 используется для другого поля.То, что я хочу сделать, это изменить список второго поля в зависимости от того, что напечатано в первом.Например, если пользователь вводит «Сундук» в первом поле, во втором поле отображается список соответствующих упражнений, выбранных из моей базы данных 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");
    });
}

PHPfile:

$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 Ответ

3 голосов
/ 02 апреля 2012

Если вы хотите выполнять автозаполнение на основе результатов запроса SQL без необходимости покидать страницу, возможно, вы захотите изучить AJAX и JSON.

Также, пожалуйста, используйте PDO вместо функций mysql_ * длявзаимодействие с СУБД с помощью PHP.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...