2017-01-26 1 views
0

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

Давайте предположим, что у меня есть учебник с ид = школа:

<input type="text" id="school"> 

В моей таблице базы данных выборки у меня есть следующие школы:

  • Дональд Трамп Начальная школа
  • Барак Обама Средний Школа
  • Franklin Delano Roosevelt Средняя школа
  • Theodore Roosevelt Техническая Академия
  • Джон Адамс средней школы
  • Эндрю Джексон средней школы
  • Эндрю день Джонсон Программа по уходу
  • Билл Клинтон Prison Образование
  • Авраам Линкольн Академии изящных искусств

Если я просто напечатайте «A» - то, что возвращается, - это в основном любая строка с A в ней.

То, что я хочу, возвращенные:

  • Эндрю Джексон средней школы
  • Эндрю день Джонсон Уход
  • Авраам Линкольн академии изящных искусств

$('#school').each(function (i, el) { 
    var that = $(el); 
    that.autocomplete({ 
     source: "src/php/extraction.php" 
     , minLength: 2 
     , select: function (event, ui) { 
     info = ui.item.label;      
     $.ajax({ 
       url: 'foobar.php' 
       , type: 'POST', 
       data: { 
        term : info } 
       , success: function (data) { 
        // do stuff } 
       }); 
      } // end of select function 
     }); 
    }); 

В моей foobar.php, на который автозаполнение отправляет , У меня есть следующий код:

if (isset($_GET['term'])) { 
$return_arr = array(); 
try { 
    $stmt = $conn->prepare('SELECT School_Name FROM SOME_TABLE WHERE School_Name LIKE :term'); 
    $stmt->execute(array('term' => '%'.$_GET['term'].'%')); 
    while ($row = $stmt->fetch()) { 
     $return_arr[] = ucwords(strtolower($row['School_Name'])); 
    } 
} catch (PDOException $e) { 
    echo 'ERROR: '.$e->getMessage(); 
} 

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

ответ

1

Просто сделать правильный SQL-запрос:

$stmt->execute(array('term' => $_GET['term'].'%')); 

Если вы хотите только результаты, начинающиеся с 'A', вы не можете использовать LIKE %A%. % будет соответствовать всем в этом «направлении».

Итак, если вы используете A%, будет соответствовать все, что начинается с «A». Если вы используете %A, это будет соответствовать всем, что заканчивается на «A».

+0

Ничего себе. Ха-ха, большое спасибо – Joseph

+0

Нет проблем, просто отметьте как принято, чтобы помочь другим с той же проблемой. –

Смежные вопросы