Поиск в таблице MySQL с использованием PHP по нескольким полям в поле автозаполнения - PullRequest
0 голосов
/ 29 марта 2012

Я пытаюсь найти два поля в моей таблице. (Таблица базы данных содержит названия коктейлей, с их именами, ингредиентами и описанием). Когда пользователь вводит желаемый термин в поле поиска, результаты автозаполнения выдаются с использованием Ajax / jquery.

У меня работает поиск по одному полю (Имя), но я не могу заставить его делать больше, чем по одному (Имя и ингредиенты). Другая проблема заключается в том, что когда выдаются результаты (они даются в виде ссылок), когда вы выбираете их, данные помещаются в поле ввода, а не переходят на следующую страницу.

index.php:

<script>
$(document).ready(function(){
 $("#tag").autocomplete("autocomplete.php", {
        selectFirst: true
    });
});
</script>

    <label>Tag:</label>
    <input name="tag" type="text" id="tag" size="40"/>

autocomplete.php:

<?php
    $q=$_GET['q'];
    $my_data=mysql_real_escape_string($q);
    $mysqli=mysqli_connect('localhost','ignitet1','password','ignitet1_WhatCocktail') or die("Database Error");
    $sql="SELECT Name FROM tblCocktail WHERE Name LIKE '%$my_data%' ORDER BY Name";
    $result = mysqli_query($mysqli,$sql) or die(mysqli_error());

    if($result)
    {
        while($row=mysqli_fetch_array($result))
        {
            echo "<a href=\"details.php\">";
            echo $row['Name']."," , "<br />";
            echo "</a>";
        }
    }
?>

Любая помощь будет оценена.

1 Ответ

0 голосов
/ 29 марта 2012

Я не уверен насчет принудительной ссылки на эту страницу, но для быстрого и грязного исправления в поиске я бы добавил: OR Ingredients LIKE '%$my_dat%' перед предложением ORDER.

Обновление:

user710502 правильно о полях, которые будут выбраны в запросе. Что касается автозаполнения, я посмотрел документацию и похоже, что вам нужно будет создать собственный обработчик события для события автозаполнения. Это событие возникает, когда пользователь выбирает параметр из раскрывающегося списка. Поведение по умолчанию (как вы знаете) заключается в заполнении поля значением «value». Ваш добавленный код будет выглядеть примерно так:

$("#selector-for-field").bind('autocompleteselect',function(event,ui){
    event.preventDefault(); // this will stop the field from filling
    // maybe make the value sent from the serverside a hyperlink,
    // eg. http://www.wherever.com/you/want/the/item/to/link-to
    // then in here do something like:
    window.location(ui.item.value);
});

Вам придется дважды проверить, что ui.item.value работает, потому что я его не проверял.

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