jquery-ui-1.8.14 Автозаполнение с помощью php и mysql - PullRequest
3 голосов
/ 17 сентября 2011

Я не очень увлекаюсь js и программированием в целом, но я очень увлечен чем-то, что действительно не должно быть слишком сложным.Посетите тестовую страницу:

[УДАЛЕННАЯ ССЫЛКА]

У меня есть три поля автозаполнения: текущая статистика клуба, нации и карьеры.Автозаполнение отлично работает для статистики карьеры, где я также могу добавлять поля, а автозаполнение также работает для добавленного поля.

Но для текущих полей клуба и нации я получаю результаты во время набора текста, но когда нажимаю правильный выводон не отображается в поле ввода.

Я могу заставить его работать с помощью других js-библиотек, но тогда он больше не работает для полей статистики карьеры с помощью кнопки добавления.

Я использую следующие библиотеки:

<script  type="text/javascript" src="js/jquery-1.6.3.js"></script>
<script  type="text/javascript" src="js/jquery-ui-1.8.14.custom.min.js"></script>
<script  type="text/javascript" src="js/jq-ac-script.js"></script>

Текущий html-клуб выглядит так:

<p>
    Current club <label>:</label>
    <input type="text" id="currentclub" />
</p>

В пользовательском jq-ac-script.js, сделанном на заказ (я изначально нашел это где-то в Интернетене помню где) важная часть:

$(document).ready(function(){
    $( "#currentclub" ).autocomplete({
        source: "get_club_list.php",
        minLength: 1    
    })
    .data( "autocomplete" )._renderItem = function( ul, item ) {
       return $( "<li></li>" )
       .data( "item.autocomplete", item )
       .append( item.currentclub )
       .appendTo( ul );
    };
});

"get_club_list.php" выглядит следующим образом:

<?php
include ("dbsetup.php");

$return_arr = array();
$param = $_GET["term"];

$fetch = mysql_query("SELECT * FROM FootNews_CLUB 
    WHERE clubShortName LIKE '%$param%'");

/* Retrieve and store in array the results of the query.*/
while ($row = mysql_fetch_array($fetch, MYSQL_ASSOC)) {

    $row_array['currentclub']           = $row['clubShortName'];
    array_push( $return_arr, $row_array );
}

/* Free connection resources. */
mysql_close($conn);

/* Toss back results as json encoded array. */
echo json_encode($return_arr);

?>

Любые идеи, почему почему выбранный клуб не показываеткогда я нажму это будет appriciated !!

1 Ответ

1 голос
/ 17 сентября 2011

Ух ты, использовал мой php код. Круто, рад, что смог помочь. http://www.jensbits.com/2010/03/29/jquery-ui-autocomplete-widget-with-php-and-mysql/

Не уверен, почему вы используете код автозаполнения с _renderItem. Я не думаю, что вам это нужно.

Измените php-код на это:

while ($row = mysql_fetch_array($fetch, MYSQL_ASSOC)) {

    $row_array['currentclub']  = $row['clubShortName'];
    $row_array['value']   = $row['clubShortName'];
    array_push( $return_arr, $row_array );
}

И, JQuery для:

$( "#currentclub" ).autocomplete({
    source: "get_club_list.php",
    minLength: 1    
});

Вы можете снова прочитать мое руководство, но для автозаполнения необходимо вернуть поле label или value. Затем он заполняет список выбора и соответствующее поле ввода этим значением.

Я ушел в $row_array['currentclub'] = $row['clubShortName'];, потому что я не знаю, поймаешь ли ты это позже. Если это не так, вам также не нужна эта строка.

Поскольку вы управляете возвращенными данными и можете указать поле label и / или value в php, я не понимаю, почему вы используете _renderItem для любого из автозаполнений.

Кстати, вы должны добавить mysql_real_escape_string к вашему php-коду для защиты SQL-инъекций: http://www.php.net/manual/en/function.mysql-real-escape-string.php

...