/*---------------------------------------------------------------*/
|
/*
|
Titre : Moteur de recherche simple - MySQLi
|
|
URL : https://phpsources.net/code_s.php?id=441
|
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>';
|
|
}
|
| ?> |
Invité
30 Jan 2022 à 11:12merci pour le partage
Invité
11 Nov 2021 à 08:43Merci beaucoup pour votre code
Iblsysteme
15 Juil 2010 à 14:30bonjours, Dans ton script je vois que tu as incèré ce bout de code:
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
Superpigeon
21 Aout 2008 à 09:23Deux 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 ^^)