Moteur de recherche dans une bdd

Soyez le premier à donner votre avis sur cette source.

Snippet vu 26 252 fois - Téléchargée 25 fois

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

Ajouter un commentaire

Commentaires

cs_pylsener
Messages postés
1
Date d'inscription
samedi 4 décembre 2010
Statut
Membre
Dernière intervention
6 décembre 2010
-
Besoin d'aide!

Bonjour chères amis. Je suis débutant en PHP et j'aurais besoin de votre aide.
J'aimerais utiliser le script présenté ci-haut pour effectuer des recherche dans ma base de données. Ma base contiens des fiches clients, donc j'ai adapté le script pour qu'il recherche dans toutes le tables exemples: nom, adresse, ville, telephone...ect...
Mon problème c'est un message d'erreur qui apparait au simple chagement de la page.
Voici le message.

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home/b49849491/public_html/bdclient/recherche.php on line 24

A la base ce script a suscité mon intérêt pour sa simplicité, par contre si vous croyez qu'un autre code serait plus approprié, dite vous que je suis ouvert a vos suggestion. :)

Merci à l'avance!
toutoos
Messages postés
56
Date d'inscription
mercredi 4 juin 2008
Statut
Membre
Dernière intervention
17 octobre 2009
-
un affichage page par page serai le bien venu je pense! puis au niveau sécurité ... tu ne filtre pas tes injection MySQL! Et ce n'est pas un script que l'on peu adapter partout! tu ne défini même pas ton $search. enfin bref je te met 3 et c'est gentil!
HenvimaL
Messages postés
28
Date d'inscription
dimanche 18 mai 2003
Statut
Membre
Dernière intervention
7 juin 2010
-
Bon en tt cas si vous cherchez un code simple pour rechercher avec LIKE prenez mon code ^^
AlBud
Messages postés
49
Date d'inscription
mardi 18 juin 2002
Statut
Membre
Dernière intervention
19 décembre 2006
-
Bof bof je vois rien d'exceptionnel surtout en niveau initié.
N'y vois rien de méchant Henvimal mais quiconque ayant quelques jours de connaissance en php peu pondre un code comme celui là.

J'aime pas trop les like or like, en plus tu t'ai pas posé la question de trié les résultats pour afficher par exemple les lignes ayant le + de fois ce(s) en premier, tu peux faire cela avec une petite soustraction/division pour resortir un résultat cohérent.

Pour MALALAM, j'utilise les fulltext mais ce qui m'embete avec ce type d'index c'est qu'il s'agit de mot complet imagine que tu cherche tout ce qui commence par infor... le fulltext te ressord rien, ensuite si un mot est contenu dans + de la moitié des lignes d'un table, il est mis en mot indésirable car non pertinant et ca dès fois ca me gène aussi après tu peux modifier aussi la liste noir mais bon c'est pas le but.

Tu aura par contre un gain considérable avec un fulltext mais ton script un peu remanié (ordre de pertinence) peux servir à d'autre, après on peux toujours lui ajouter une auto-complétion...
malalam
Messages postés
10843
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
17 -
les index FULLTEXT sont encore mieux.
Bon rien à ajouter sur le code...courage, avec un peu de lecture tu l'amélioreras facilement.

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.