автозаполнение с jquery и mysql [дубликат]

Я использовал ниже, чтобы решить свою проблему. Сначала я создал временную таблицу и вставил максимальное значение rev на уникальный идентификатор.

CREATE TABLE #temp1
(
    id varchar(20)
    , rev int
)
INSERT INTO #temp1
SELECT a.id, MAX(a.rev) as rev
FROM 
    (
        SELECT id, content, SUM(rev) as rev
        FROM YourTable
        GROUP BY id, content
    ) as a 
GROUP BY a.id
ORDER BY a.id

Затем я присоединил эти максимальные значения (# temp1) ко всем возможным комбинациям id / content. Делая это, я, естественно, отфильтровываю не максимальные комбинации id / content, и оставляю их только с максимальными значениями rev для каждого.

SELECT a.id, a.rev, content
FROM #temp1 as a
LEFT JOIN
    (
        SELECT id, content, SUM(rev) as rev
        FROM YourTable
        GROUP BY id, content
    ) as b on a.id = b.id and a.rev = b.rev
GROUP BY a.id, a.rev, b.content
ORDER BY a.id
5
задан RonanC 14 March 2011 в 23:19
поделиться

4 ответа

Взгляните на документацию jquery ui autocomplete . JSON, который вы возвращаете, не соответствует тому, что ищет автозаполнение. Возвращаемый объект должен иметь свойства с именем label или value (или оба).

Вы можете попробовать следующие опции:

Вариант 1: Изменить возвращенный JSON

Измените возвращаемый JSON, чтобы включить свойства метки / значения, такие как:

[{"label":"Sin City"}]

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

[ "Sin City", "Etc" ]

Вариант 2: изменить функцию private _render

Изменить private _renderItem для автозаполнения для использования ваших пользовательских свойств, как показано в примере автозаполнения (untested):

$( "#project" ).autocomplete({
    source: "./search.php",
    minLength: 3    
})
.data( "autocomplete" )._renderItem = function( ul, item ) {
    return $( "<li></li>" )
   .data( "item.autocomplete", item )
   .append( item.Title )
   .appendTo( ul );
};

Это немного более гибкое, но гораздо более уродливое imho.

7
ответ дан Shaun 31 August 2018 в 22:31
поделиться

Я собирался сказать это, всегда санируйте пользовательские входы.

Сложно сказать, так как я никогда не использовал автозаполнение jQuery, но я думаю, что вы должны настроить значение «#auto». Что-то вроде этого: $ ('# auto'). Val (). Autocomplet

0
ответ дан Alexcp 31 August 2018 в 22:31
поделиться

@Shaun Спасибо, иногда вам просто нужно, чтобы кто-то указал на очевидное. Я, наконец, получил его, чтобы работать

    include "db_connect.php";
$search = protect($_GET['term']);   
    $result = mysql_query("SELECT Title FROM `movie` WHERE `Title` LIKE '%$search%' ORDER BY Title ASC") or die('Something went wrong');

    $json = '[';
        $first = true;
        while ($row = mysql_fetch_assoc($result))
        {
            if (!$first) { $json .=  ','; } else { $first = false; }
            $json .= '{"value":"'.$row['Title'].'"}';
        }
        $json .= ']';
        echo $json;
4
ответ дан RonanC 31 August 2018 в 22:31
поделиться

atleast запускать mysql_real_escape_string () в $ search перед помещением его в SQL-запрос.

Источник: бит в вашем javascript, вероятно, испортил его. Вы должны удалить. если «search.php» находится в «верхней части» каталога documentroot.

Firebug, вероятно, поможет вам взять пик и в сообщении.

0
ответ дан vicTROLLA 31 August 2018 в 22:31
поделиться
Другие вопросы по тегам:

Похожие вопросы: