Maison  >  Article  >  développement back-end  >  Comment implémenter la fonction de recherche sur le Web en utilisant php

Comment implémenter la fonction de recherche sur le Web en utilisant php

PHPz
PHPzoriginal
2023-03-29 11:34:431514parcourir

PHP est un langage de script côté serveur largement utilisé dans le développement Web. Il possède des fonctions puissantes et flexibles et peut implémenter une variété de fonctions complexes. Parmi elles, la fonction de recherche est sans aucun doute l'une des fonctions les plus couramment utilisées par les utilisateurs, c'est pourquoi cet article présentera comment utiliser PHP pour implémenter la fonction de recherche Web.

  1. Créez un formulaire de recherche

Ajoutez un formulaire de recherche à la page principale de votre site Web, généralement une simple zone de texte et un bouton de recherche. Le code est le suivant :

<form action="search.php" method="get">
  <input type="text" name="keyword" placeholder="搜索">
  <input type="submit" value="搜索">
</form>

Parmi eux, l'attribut action spécifie le fichier de traitement lors de la soumission du formulaire comme search.php, et la méthode L'attribut code> spécifie la méthode de soumission. Pour <code>get, vous pouvez également utiliser la méthode post. action属性指定了表单提交时的处理文件为search.phpmethod属性指定了提交方式为get,也可以使用post方式。

  1. 处理搜索请求

将搜索请求提交至search.php文件进行处理。代码如下:

<?php
// 获取提交的搜索关键词
$keyword = $_GET[&#39;keyword&#39;];

// 连接数据库
$conn = mysqli_connect(&#39;localhost&#39;, &#39;root&#39;, &#39;password&#39;, &#39;database&#39;);

// 查询匹配的结果
$result = mysqli_query($conn, "SELECT * FROM articles WHERE title LIKE &#39;%$keyword%&#39; OR content LIKE &#39;%$keyword%&#39;");

// 处理查询结果
while ($row = mysqli_fetch_assoc($result)) {
  // 显示搜索结果
  echo $row[&#39;title&#39;];
  // ...
}

// 关闭数据库连接
mysqli_close($conn);
?>

首先,从$_GET数据里获取关键词$keyword,然后连接数据库,使用SELECT语句查询匹配的结果。这个例子中是查询了articles表中标题和内容出现关键词$keyword的所有文章。

最后,处理查询结果并显示在页面上,记得最后关闭数据库连接。

  1. 精确匹配搜索

如果要实现精确匹配搜素,则将WHERE语句中的LIKE改为=即可。代码如下:

$result = mysqli_query($conn, "SELECT * FROM articles WHERE title = '$keyword'");
  1. 分页显示搜索结果

当搜索结果被查询出来后,通常会将其展示在多个页面中。这时,就需要按照划分好的页面条数来显示相关搜索结果。可以使用PHP的LIMIT语句对查询结果进行分页处理。代码如下:

// 分页每页显示的条数
$pagesize = 10;
// 当前页码
$page = isset($_GET['page']) ? intval($_GET['page']) : 1;

// 查询总记录数
$count_result = mysqli_query($conn, "SELECT COUNT(*) AS count FROM articles WHERE title LIKE '%$keyword%' OR content LIKE '%$keyword%'");
$count_row = mysqli_fetch_assoc($count_result);
$count = $count_row['count'];

// 计算总页数
$pagecount = ceil($count / $pagesize);

// 分页查询
$start = ($page - 1) * $pagesize;
$limit = "$start, $pagesize";
$result = mysqli_query($conn, "SELECT * FROM articles WHERE title LIKE '%$keyword%' OR content LIKE '%$keyword%' LIMIT $limit");

// 处理查询结果
// ...

// 显示分页链接
echo "<div class=&#39;pagination&#39;>";
for ($i = 1; $i <= $pagecount; $i++) {
  if ($i == $page) {
    echo "<span class=&#39;current&#39;>$i</span>";
  } else {
    echo "<a href=&#39;search.php?keyword=$keyword&page=$i&#39;>$i</a>";
  }
}
echo "</div>";

首先,定义每页显示的条数和当前的页码。然后查询匹配的结果总条数并计算总页数。最后,使用LIMIT语句对查询结果进行分页,并显示分页链接。其中,$start$limit参数用于控制查询的起始位置和数量。

  1. 使用全文搜索

除了在关键词中使用精确匹配或模糊匹配外,还可以使用全文搜索来实现更加精确的结果匹配。全文搜索可以通过MySQL自带的MATCHAGAINST语句来实现,使用方法如下:

$result = mysqli_query($conn, "SELECT * FROM articles WHERE MATCH(title, content) AGAINST('$keyword' IN NATURAL LANGUAGE MODE)");

关键词$keyword会被自动分词,匹配titlecontent

    Traitement des demandes de recherche

    🎜Envoyez les demandes de recherche au fichier search.php pour traitement. Le code est le suivant : 🎜rrreee🎜Tout d'abord, récupérez le mot-clé $keyword à partir des données $_GET, puis connectez-vous à la base de données et utilisez le SELECT code> pour interroger le résultat correspondant. Dans cet exemple, tous les articles de la table <code>articles dont les titres et le contenu apparaissent avec le mot-clé $keyword sont interrogés. 🎜🎜Enfin, traitez les résultats de la requête et affichez-les sur la page. Pensez à fermer la connexion à la base de données à la fin. 🎜
      🎜Recherche de correspondance exacte🎜🎜🎜Si vous souhaitez obtenir une recherche de correspondance exacte, remplacez le LIKE dans l'instruction WHERE par =C'est ça. Le code est le suivant : 🎜rrreee
        🎜Afficher les résultats de recherche dans des pages🎜🎜🎜Lorsque les résultats de recherche sont interrogés, ils sont généralement affichés sur plusieurs pages. A ce moment, il est nécessaire d’afficher des résultats de recherche pertinents en fonction du nombre de pages divisées. Vous pouvez utiliser l'instruction LIMIT de PHP pour paginer les résultats de la requête. Le code est le suivant : 🎜rrreee🎜Définissez d'abord le nombre d'éléments affichés sur chaque page et le numéro de la page actuelle. Recherchez ensuite le nombre total de résultats correspondants et calculez le nombre total de pages. Enfin, utilisez l'instruction LIMIT pour paginer les résultats de la requête et afficher le lien de pagination. Parmi eux, les paramètres $start et $limit sont utilisés pour contrôler la position de départ et la quantité de la requête. 🎜
          🎜Utiliser la recherche en texte intégral🎜🎜🎜En plus d'utiliser la correspondance exacte ou la correspondance floue dans les mots-clés, vous pouvez également utiliser la recherche en texte intégral pour obtenir une correspondance de résultats plus précise. La recherche en texte intégral peut être réalisée via les instructions MATCH et AGAINST fournies avec MySQL. La méthode d'utilisation est la suivante : 🎜rrreee🎜Le mot-clé $keyword<.> effectuera automatiquement la segmentation de Word, faisant correspondre n'importe quel champ dans <code>title et content, et enfin triant et affichant les résultats en fonction du degré de correspondance. 🎜🎜Ce qui précède concerne l'utilisation de PHP pour implémenter la fonction de recherche sur le Web. Grâce aux étapes ci-dessus, nous pouvons rapidement ajouter des fonctions de recherche au site Web et améliorer l'expérience utilisateur du site Web. 🎜

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn