Как использовать PHP и MySQLI для упорядочения результатов по релевантности?

0

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

Я пытался использовать strpos(), но я получаю только список результатов, содержащих запрос. Да, я знаю, что это именно то, что он делает, но что будет лучшим решением?

Прямо сейчас мой PHP выглядит следующим образом

$dbc = mysqli_connect ('localhost', 'username', 'password', 'DBName')
        or die ('Error connecting to the database.');

//Get and cleanse the query
$q = mysqli_real_escape_string($dbc, strtolower($_GET['q']));
$query = "SELECT * FROM games";
$result = mysqli_query($dbc, $query)
        or die('Error querying the database');

while($row = mysqli_fetch_array($result)) {
    $name = strtolower($row['name']);
    $img = $row['img'];
    $description = $row['description'];
    $url = $row['URL'];
    $creator = $row['creator'];

    if (strpos($name, $q) !== false){
        $name = $row['name'];
        echo "
            <div class='result'>
            <a class='result-link' href='$url'>
            <p class='name'>$name</p>
            </a>
            <p class='url'>$url</p>
            <p class='description'>$description</p>
            </div>
            \n";
    }
}

mysqli_close($dbc);

Обратите внимание, что я использую strtolower() как способ сделать запрос и результат без strtolower() регистра.

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

  • 0
    Это простое утверждение ORDER BY ?
  • 1
    Ищите полнотекстовый поиск в SQL.
Показать ещё 5 комментариев
Теги:
mysqli

1 ответ

0
Лучший ответ

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

$query = "SELECT * FROM games ORDER BY relevence ASC"; //Or you might use DESC depending on what kind of sort you need.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню