Ajax Livesearch поиск в двух столбцах

Я использую Ajax LiveSearch отсюда: Ajax Livesearch

Я хочу, чтобы пользователи могли искать города в базе данных, и пока это работает отлично.
Когда я наберу письмо, оно покажет мне города и почтовый индекс.
Теперь я пытаюсь сделать так же, чтобы окно поиска также работало с использованием шифра, чтобы города отображались, если пользователь выполняет поиск по почтовым индексам.
Но я застрял полностью. Может быть, кто-то имеет опыт работы с поисковыми окнами и может мне помочь.

в config.php я определил поисковый столбец:

const USER_TABLE = 'cities';
const SEARCH_COLUMN = 'Name';

Чтобы получить результаты из базы данных у меня есть это:

$db = DB::getConnection();

// get the number of total result
$stmt = $db->prepare('SELECT COUNT(id) FROM ' . Config::USER_TABLE . ' WHERE ' . Config::SEARCH_COLUMN . ' LIKE :query');
$search_query = $query.'%';
$stmt->bindParam(':query', $search_query, PDO::PARAM_STR);
$stmt->execute();
$number_of_result = $stmt->fetch(PDO::FETCH_COLUMN);

// initialize variables
$HTML = '';
$number_of_pages = 1;

if ( (int) $number_of_result !== 0)
{
if ($items_per_page === 0)
{
// show all
$stmt = $db->prepare('SELECT * FROM ' . Config::USER_TABLE . ' WHERE ' . Config::SEARCH_COLUMN . ' LIKE :query ORDER BY ' .Config::SEARCH_COLUMN);
$search_query = $query.'%';
$stmt->bindParam(':query', $search_query, PDO::PARAM_STR);
}
else
{
/*
* pagination
*
* calculate total pages
*/
if ($number_of_result < $items_per_page)
$number_of_pages = 1;
elseif ($number_of_result > $items_per_page)
$number_of_pages = floor($number_of_result / $items_per_page) + 1;
else
$number_of_pages = $number_of_result / $items_per_page;

/*
* pagination
*
* calculate start
*/
$start = ($current_page > 0 ) ? ($current_page - 1) * $items_per_page : 0;

$stmt = $db->prepare('SELECT * FROM ' . Config::USER_TABLE . ' WHERE ' . Config::SEARCH_COLUMN . ' LIKE :query ORDER BY '.Config::SEARCH_COLUMN.' LIMIT ' . $start . ', ' . $items_per_page);
$search_query = $query.'%';
$stmt->bindParam(':query', $search_query, PDO::PARAM_STR);
}

// run the query and get the result
$stmt->execute();
$results = $stmt->fetchAll(PDO::FETCH_ASSOC);

И это покажет результаты на моем сайте:

foreach($results as $result)
{
$HTML .= "<tr><td>{$result['Name']}</td><td>{$result['Postal_Code']}</td></tr>";
}

Так что, если я наберу буквы, это также даст мне правильный почтовый индекс из столбца «Postal_Code».
Но я думаю, что это также возможно сделать по-другому, я набираю номер, и он показывает мне город и почтовый индекс?
в config.php я могу только один столбец определить

const SEARCH_COLUMN = 'Name';

Может быть, можно использовать второй const, например:

const SEARCH_COLUMN2 = 'Postal_Code';

?
Но как я могу использовать его в запросе БД, чем?
Мне немного сложно объяснить мою проблему, поэтому я надеюсь, что вы поймете меня в любом случае 🙂
Спасибо

1

Решение

Если вы добавите еще одну константу в вашу конфигурацию, вы можете просто добавить OR пункт к вашему запросу:

' WHERE ' . Config::SEARCH_COLUMN . ' LIKE :query OR '. Config::SEARCH_COLUMN2 . ' LIKE :query'
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]