Moteur de recherche dans une bdd

Contenu du snippet

Bon alors le code est très simple ! tout est presque dans le titre ^^

Ce moteur de recherche va vous sortir une liste (infinie mais limitable ^^) où il affichera ce que vous lui demanderez d'afficher comme variable, en cherchant dans chaque ligne (de votre base de donnée où vous voulez effectuer la recherche) le(s) mot(s) à chercher.

On peut recherche grace à ce script 1 mot, ou plusieurs mots mais il va cherche la chaîne de mots que vous avez entré et pas prendre 1 mot 1 par 1. C'est le seul inconvéniant. Par contre si vous entrer la moitié de votre mot il va vous trouver votre mot complet !

Voila un exemple du script http://henvimal.a.free.fr/sG.fr dans la page News il y a un ptit moteur de recherche made by me testez le !

Source / Exemple :


Bon alors le truc aussi c'est que vous pouvez cherche que dans une table ! pas 2 table ...

Donc je vous donne un exemple de table a créer pour que vous compreniez mieux : 
CREATE TABLE valdemarne (
  id int(4) NOT NULL auto_increment,
  rohff varchar(255) default NULL,
  rimk varchar(255) default NULL,
  booba varchar(255) default NULL,
  PRIMARY KEY  (id)
)
Entrez plusieurs ligne avec des mots ke vous rechercherez apres pour TaTer le moteur de recherche koi ^^

apres voilà le code à mettre dans une page recherche.php :
<table border="0" cellspacing="0" cellpadding="1" width='100%'>
<tr>
<td align='center'>
<form method="get" action="recherche.php">
 <b>Recherche : </b><input type="text" name="search" size='35' value='<? echo "$search"; ?>'>
 <input type="submit" value="OK!">
</form>
</td>
</tr>
<tr>
<td height='10'>
</td>
</tr>
<?
$host = "localhost";  // votre host sql (ex: sql.free.fr)
$user = "root";  // votre identifiant
$pass = "";  // votre password
$bdd  = "VOTRE_BDD"; // le nom de votre base de donné
$table = "valdemarne"; // par défaut le nom de votre table est news mais si vous voulez le changer libre a vous (n'oubliez pas de changer aussi le fichier .sql)

$c = @mysql_connect($host,$user,$pass) or die("connection impossible");
@mysql_select_db("$bdd",$c) or die("selection impossible");
$result = mysql_query("SELECT count(id) FROM ".$table." WHERE `rohff` LIKE '%$search%' OR `rimk` LIKE '%$search%' OR `booba` LIKE '%$search%'");
$ret = mysql_fetch_array($result);
// nombre de lignes
$nb_results = $ret[0];
if ($nb_results<=0 OR empty($search)) {
if (empty($search)) {
echo "<tr><td><p class='texte'>Pas de recherche à effectuer.</td></tr>";
} else {
echo "<tr><td><p class='texte'>Il y a <b>$nb_results</b> résultats à votre recherche. Recommencez avec un seul mot...</td></tr>";
}
} else {
echo "<tr><td><p class='texte'>Il y a <b>$nb_results</b> résultats à votre recherche.</td></tr>";

$sql = "select * from $table WHERE `rohff` LIKE '%$search%' OR `rimk` LIKE '%$search%' OR `booba` LIKE '%$search%' order by id DESC";

if($p = @mysql_query($sql,$c)){
while($r = @mysql_fetch_array($p)){
 $id = "$r[id]";
 $rohff = "$r[rohff]";
 $rimk = "$r[rimk]";
 $booba = "$r[booba]";
 
echo "<tr>
<td>
$rohff
</td>
<td>
$rimk
</td>
<td>
$booba
</td>
</tr>";

}
}
}
?>
</table>

Conclusion :


Voila tout simple et tout con mais ca marche. Ce code ne demande qu'à être amélioré !

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.