Я пытаюсь создать простую страницу поиска для своего веб-сайта, но не знаю, как искать в моей базе данных без использования чего-то вроде 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()
регистра.
Я ожидаю, что результаты будут в том порядке, в котором они отображаются в базе данных, что имеет смысл и происходит, но что я могу сделать, чтобы отсортировать их?
Я должен увидеть структуру вашей базы данных, но предположим, что у вас есть столбец релевантности, тогда вам просто нужно сделать запрос, используя порядок ключей следующим образом:
$query = "SELECT * FROM games ORDER BY relevence ASC"; //Or you might use DESC depending on what kind of sort you need.
ORDER BY
?