Moteur de recherche simple - MySQLi

Un moteur de recherche nécessitant une table MySQLi qui exécute la recherche sur une table avec la requête LIKE.

Une table SQL en exemple est fournie.


Information sur les mises à jour

Dernière mise à jour :

18 Sept 2019
refactoring du code en PHP 7
fonctionnement du code vérifié

27 797  vues
Compatibilité du code
PHP 5, PHP 7 et PHP 8
  code classé dans   Recherches
  code source classé dans   Recherches
 
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
                    
<?php
/*------------------------------*/
/*
Titre : Moteur de recherche simple - MySQLi

Auteur : freemh
Date édition : 02 Aout 2008
Date mise a jour : 18 Sept 2019

Rapport de la maj:
- refactoring du code en PHP 7
- fonctionnement du code vérifié
*/
/*------------------------------*/?>
<!-- Exécuter cette requête dans votre base de données

CREATE TABLE IF NOT EXISTS `site` (
`id` int(10) unsigned NOT NULL auto_increment,
`nom_site` varchar(100) character set latin1 NOT NULL,
`adresse_site` varchar(100) character set latin1 NOT NULL,
`description_site` varchar(100) character set latin1 NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin7 AUTO_INCREMENT=4 ;


INSERT INTO `site` (`id`, `nom_site`, `adresse_site`, `description_site`)
VALUES
(1, 'Annonce Voiture', '<a href="mehdi">voiture</a>', 'trouver tous les
voitures'),
(2, '', '', ''),
(3, 'voiture mercedes', '<a href="mercedes">Mercedes car</a>', 'Voiture
mercedes');

-->

<html>
<head>
<title>Moteur de Recherche</title>
<meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1"/>
</head>
<?php

// Connexion à  la base donnée

$db_server = 'localhost'; // Adresse du serveur MySQL
$db_name = ''; // Nom de la base de données
$db_user_login = 'root'; // Nom de l'utilisateur
$db_user_pass = ''; // Mot de passe de l'utilisateur

// Ouvre une connexion au serveur MySQL
$conn = mysqli_connect($db_server,$db_user_login, $db_user_pass, $db_name);


if ( isset($_POST['requete']) )
$requete = htmlentities($conn->real_escape_string($_POST['requete']));


if (!empty($requete))
{
$req = "SELECT * FROM site WHERE nom_site LIKE '%$requete%'";
$exec = $conn->query($req);
// exécuter la requête
$nb_resultats = $exec->num_rows;
// compter les résultats


if($nb_resultats != 0)
{
echo '<center>';
echo '
<form action="" method="Post">
<input type="text" name="requete" size="60px">
<input type="submit" value="Ok">
</form>';
echo '</center>';
echo '<font color="blue">Résultat de votre recherche </font><br/>
<font size="2px">'.$nb_resultats.'</font>';


if($nb_resultats > 1)
{
echo ' <font size="2px" color="red">résultats</font> ';
}
else
{
echo ' <font size="2px" color="red">résultats trouvé</font> '
;
}

echo '<font size="2px">dans notre base de données :</font><br/><br/>'
;



while($donnees = mysqli_fetch_array($exec))
{
?>

<?php

echo '<span>';
echo '<font size="2px">'.$donnees['adresse_site'].'</font><br/>';
echo '<font size="2px">'.$donnees['nom_site'].'</font><br/>';
echo '<font size="2px">'.$donnees['description_site'].'</font><br/>';
echo '</span>';
?>

<?php
} // fin de la boucle
?>


<?php
}


else {
echo '<center>';
echo '
<form action="" method="Post">
<input type="text" name="requete" size="60px">
<input type="submit" value="Ok">
</form>';
echo '</center>';
echo '<h5>Pas de résultats</h3>';
echo '<pre>Nous n avons trouver aucun résultats pour votre requête
<font color="blue">' .$_POST['requete'].'</font></pre>';

}
}

else
{


echo '<center>';
echo '
<form action="" method="Post">
<input type="text" name="requete" size="60px">
<input type="submit" value="Ok">
</form>';
echo '</center>';

}
?>
<?php
/*------------------------------*/
/*
Titre : Moteur de recherche simple - MySQLi

Auteur : freemh
Date édition : 02 Aout 2008
Date mise a jour : 18 Sept 2019

Rapport de la maj:
- refactoring du code en PHP 7
- fonctionnement du code vérifié
*/
/*------------------------------*/?>
<!-- Exécuter cette requête dans votre base de données

CREATE TABLE IF NOT EXISTS `site` (
`id` int(10) unsigned NOT NULL auto_increment,
`nom_site` varchar(100) character set latin1 NOT NULL,
`adresse_site` varchar(100) character set latin1 NOT NULL,
`description_site` varchar(100) character set latin1 NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin7 AUTO_INCREMENT=4 ;


INSERT INTO `site` (`id`, `nom_site`, `adresse_site`, `description_site`)
VALUES
(1, 'Annonce Voiture', '<a href="mehdi">voiture</a>', 'trouver tous les
voitures'),
(2, '', '', ''),
(3, 'voiture mercedes', '<a href="mercedes">Mercedes car</a>', 'Voiture
mercedes');

-->

<html>
<head>
<title>Moteur de Recherche</title>
<meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1"/>
</head>
<?php

// Connexion à  la base donnée

$db_server = 'localhost'; // Adresse du serveur MySQL
$db_name = ''; // Nom de la base de données
$db_user_login = 'root'; // Nom de l'utilisateur
$db_user_pass = ''; // Mot de passe de l'utilisateur

// Ouvre une connexion au serveur MySQL
$conn = mysqli_connect($db_server,$db_user_login, $db_user_pass, $db_name);


if ( isset($_POST['requete']) )
$requete = htmlentities($conn->real_escape_string($_POST['requete']));


if (!empty($requete))
{
$req = "SELECT * FROM site WHERE nom_site LIKE '%$requete%'";
$exec = $conn->query($req);
// exécuter la requête
$nb_resultats = $exec->num_rows;
// compter les résultats


if($nb_resultats != 0)
{
echo '<center>';
echo '
<form action="" method="Post">
<input type="text" name="requete" size="60px">
<input type="submit" value="Ok">
</form>';
echo '</center>';
echo '<font color="blue">Résultat de votre recherche </font><br/>
<font size="2px">'.$nb_resultats.'</font>';


if($nb_resultats > 1)
{
echo ' <font size="2px" color="red">résultats</font> ';
}
else
{
echo ' <font size="2px" color="red">résultats trouvé</font> '
;
}

echo '<font size="2px">dans notre base de données :</font><br/><br/>'
;



while($donnees = mysqli_fetch_array($exec))
{
?>

<?php

echo '<span>';
echo '<font size="2px">'.$donnees['adresse_site'].'</font><br/>';
echo '<font size="2px">'.$donnees['nom_site'].'</font><br/>';
echo '<font size="2px">'.$donnees['description_site'].'</font><br/>';
echo '</span>';
?>

<?php
} // fin de la boucle
?>


<?php
}


else {
echo '<center>';
echo '
<form action="" method="Post">
<input type="text" name="requete" size="60px">
<input type="submit" value="Ok">
</form>';
echo '</center>';
echo '<h5>Pas de résultats</h3>';
echo '<pre>Nous n avons trouver aucun résultats pour votre requête
<font color="blue">' .$_POST['requete'].'</font></pre>';

}
}

else
{


echo '<center>';
echo '
<form action="" method="Post">
<input type="text" name="requete" size="60px">
<input type="submit" value="Ok">
</form>';
echo '</center>';

}
?>

      Fonctions du code - Doc officielle PHP

   php.net  
Description
Versions PHP
    echo
Affiche une chaîne de caractères
PHP 4, 5, 7 et 8
    empty
Détermine si une variable est vide
PHP 4, 5, 7 et 8
    htmlentities
Convertit tous les caractères éligibles en entités HTML
PHP 4, 5, 7 et 8
    isset
Détermine si une variable est déclarée et est différente de null
PHP 4, 5, 7 et 8
    mysqli_connect
Alias de mysqli::__construct
PHP 5, 7 et 8
    mysqli_fetch_array
Retourne une ligne de résultat sous la forme d'un tableau associatif
PHP 5, 7 et 8

[4]

  • avatar

    Invité

    30 Jan 2022 à 11:12

    merci pour le partage

  • avatar

    Invité

    11 Nov 2021 à 08:43

    Merci beaucoup pour votre code

  • avatar

    Iblsysteme

    15 Juil 2010 à 14:30

    bonjours, Dans ton script je vois que tu as incèré ce bout de code:


        echo 
    '<center>';   
        echo 
    '
           <form action="moteur_recherche2.php" method="Post">
           <input type="text" name="requete" size="60px">
           <input type="submit" value="Ok">
           </form>'
    ;
        echo 
    '</center>';
        echo 
    '<h5>Pas de resultats</h3>';
        echo 
    '<pre>Nous n avons trouver aucun resultats pour votre requete
              <font color="blue">' 
    .$_POST['requete'].'</font></pre>';
     
    }

    mais quand tu lance une recherche il te réclame "moteur_recherche2.php"
    mais on ne le retrouve pas dans le zip
    que dois t'on faire

  • avatar

    Superpigeon

    21 Août 2008 à 09:23

    Deux petites remarques en parcourant vite ce petit script :

    - Utiliser htmlentities pour l'insertion en base... mouarf, c'est plutôt pour l'affichage qu'on l'utilise généralement, il suffit qu'un jour tu veuilles faire autre chose de ta base et tu te retrouves avec plein d'entités html inexploitables.

    - Quand tu traites un résultats d'une requete en base, je vois que tu utilises myql_fetch_array(), ça fonctionne, mais vu l'utilisation que tu en fais, mysql_fetch_assoc() serait plus efficace (mysql_fetch_array renvoie un tableau avec en indice le nom des champs ET des indices numériques, mysql_fetch_array n'utilise que les noms de champs comme indice, donc un tableau deux fois moins gros ^^)

Minimum 10 mots. Votre commentaire sera visible après validation.


 Autres snippets qui pourraient vous intéresser

Moteur de recherche basique / MySQLi

Compatibilité : PHP 5, PHP 7, PHP 8

Le mot est entré via 1 formulaire puis la recherche se fait sur la table SQL. La variable $recherche est envoyée par le formulaire qui lui est fourni dans le source.

Moteur de recherche multi fonctions / MySQLi

Compatibilité : PHP 5, PHP 7, PHP 8

Moteur de recherche qui créer la requête pour une recherche dans une table SQL en mode multi fonctions (et, ou, la phrase exacte)

* Requêtes exécutées avec Recherche Contextuelle

  Les derniers scripts

Magepattern 1.1

logo Magepattern
Langue langue fr
Date  aujourd'hui
Taille 6 Mo
Catégorie CMS

PHP 8.5.5

logo PHP
Langue langue us
Date 12 Avril
Taille 32 Mo
Catégorie PHP

PHP 8.4.20

logo PHP
Langue langue us
Date 12 Avril
Taille 30 Mo
Catégorie PHP

Serendipity 2.6.0

logo Serendipity
Langue langue fr
Date 11 Avril
Taille 15 Mo
Catégorie Blogs

Drupal 11.3.6

logo Drupal
Langue langue us
Date 11 Avril
Taille 34 Mo
Catégorie CMS

TYPO3 14.2.0

logo TYPO3
Langue langue fr
Date 10 Avril
Taille 38 Mo
Catégorie CMS