Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

MOTEUR DE RECHERCHE DANS UNE BDD


Information sur la source

Catégorie :Application Classé sous : recherche, mot, texte, moteur, bdd Niveau : Initié Date de création : 28/09/2006 Vu : 16 181

Note :
1,67 / 10 - par 3 personnes
1,67 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (18)
Ajouter un commentaire et/ou une note

Description

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

  • 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>
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é !
 

Commentaires et avis

signaler à un administrateur
Commentaire de malalam le 28/09/2006 16:48:57 administrateur CS

hello,

merci de justifier les notes pourries avec un COMMENTAIRE.
J'ai supprimé le 1/10 en attendant un commentaire constructif.

signaler à un administrateur
Commentaire de HenvimaL le 28/09/2006 19:26:28

je comprends pas ce que tu veux dire ...

signaler à un administrateur
Commentaire de garfield90 le 28/09/2006 20:17:58

PHP :
Hello world mal codé
Gestion d'erreur par die() => je trouve ca pas propre
Inutilité de définir les variables de connexion (host, table, user, pass, database) car utilisé qu'une fois
$c est un nom incomprehensible
Aucune vérification sur la présence de $_GET['search'], au hasard par isset
-> empty ne sert pas a ca, meme si il y répond presque correctement

# if ($nb_results<=0 OR empty($search)) {
# if (empty($search)) {
=> Pourquoi faire une double vérification sur le fait que $search est vide (et non pas non défini)
=> $nb_result est soit false soit >= 0
==> si il est égale (===) à false alors il y a une erreur dans ta requete
==> si il est égale (===) à 0 alors il n'y a aucune réponse
- ton script est plus que sujet aux attaques type XSS ( utilise mysql_real_escape_string pour l'empecher )
- $ret = mysql_num_rows de souvenir ( j'utilise une classe donc à vérifié ;)

SQL :
Hello world aussi car utilise la fonction LIKE pour la recherche c'est un classique

HTML :
utilisation de table non nécessaire, est mal faite (pas de colspan)
utilisation de balise obsolète

CONCLUSION :
Encore un exemple de code à ne pas faire car :
- code qui montre beaucoup de mauvaise habitude
- code mal penser
- code inutile ( car tout le monde avec un peu de pratique et une utilisation correcte d'un moteur trouvera mieux)

NOTE :
0 pour tout ce que j'ai écrit
0 car c'est loin d'être un code d'initié (débutant à la rigueur car j'estime qu'il n'en a pas le niveau)

signaler à un administrateur
Commentaire de HenvimaL le 28/09/2006 23:06:20

bon ok j'avoue... en fait j'ai appris le LIKE y'a pas longtemps donc jvoulais faire une source tte bête mais qui s'adapte enfin voila... moi jla trouve utile ...

signaler à un administrateur
Commentaire de JulSoft le 29/09/2006 02:00:20

On peut efectivement faire ça en une seule requete mysql:
$result = mysql_query($sql,$c);
$nb_results = mysql_num_rows($result);
... lecture des resultats

signaler à un administrateur
Commentaire de younes371 le 29/09/2006 03:24:29

JulSoft, je te demande si tu peux copier ici un code améliorer, merci,
car je travail sur ça, et j aime faire un code améliorer, puisque j ai deja fait comme l exemple cité en haut

signaler à un administrateur
Commentaire de malalam le 29/09/2006 08:12:12 administrateur CS

henvimal => ce n'est pas à toi que ce message s'adressait, mais à celui qui avait mis 1/10 sans laisser de commentaire. Je viens d'ailleurs d'en supprimer un autre...
Pour exemple, si Garfield avait mis 1/10, j'aurais laissé sa note. Les mauvaises notes (et les bonnes aussi si possible) doivent être appuyées par un commentaire.

signaler à un administrateur
Commentaire de coockiesch le 29/09/2006 09:24:04

Younes371 > J'ai fais ceci:
http://www.phpcs.com/codes/MOTEUR-RECHERCHE-DANS-BDD-II_38782.aspx
Et ca:
http://www.phpcs.com/codes/MOTEUR-RECHERCHE-DANS-BDD_25410.aspx

@++

R@f

signaler à un administrateur
Commentaire de garfield90 le 29/09/2006 09:32:44

Coockiesh, tu m'as devancé mais j'aurais fait pire : => moteur de recherche

signaler à un administrateur
Commentaire de coockiesch le 29/09/2006 09:48:01

Garfield90: pas compris! Tu aurais faire quoi de pire?

@++

R@f

signaler à un administrateur
Commentaire de garfield90 le 29/09/2006 11:05:53

Je lui aurai dis de faire une recherche, c'est encore le plus simple pour trouver quelque chose ;)
d'ou le " => moteur de recherche ", => ( voir, direction, ... )

" => [] " <=> "je sors" ;)

signaler à un administrateur
Commentaire de coockiesch le 29/09/2006 11:15:31

Oui, en tant que boolay reconnu, je connais bien le: tu ==> [ ] ! :-D

Rechercher un moteur de recherche, c'est le comble, ^^

@++

R@f

signaler à un administrateur
Commentaire de younes371 le 29/09/2006 16:20:10

Merci cookiesh

signaler à un administrateur
Commentaire de guismo1er le 29/09/2006 22:21:04

utilise REGEXP , c bcp mieux pour tes requetes

signaler à un administrateur
Commentaire de malalam le 30/09/2006 12:21:53 administrateur CS

les index FULLTEXT sont encore mieux.
Bon rien à ajouter sur le code...courage, avec un peu de lecture tu l'amélioreras facilement.

signaler à un administrateur
Commentaire de AlBud le 05/10/2006 00:04:49

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...

signaler à un administrateur
Commentaire de HenvimaL le 19/10/2006 18:14:21

Bon en tt cas si vous cherchez un code simple pour rechercher avec LIKE prenez mon code ^^

signaler à un administrateur
Commentaire de toutoos le 26/07/2008 11:17:51 3/10

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!

Ajouter un commentaire

Discussions en rapport avec ce code source dans le forum

Conception d'un moteur de recherche [ par moniteur ] Bonjour,Je cherche à réaliser un moteur de recherche en php ( / mysql ? ) afin de rechercher dans des fichiers textes (pour simplifier). En faisant qu Surligner mot moteur recherche [ par flopad ] Bonjour,j'utilise un moteur de recherche en php.Lorsque l'utilisateur effectue une recherche, il arrive sur une page avec un résumé des pages qui corr Ajouter la troncature dans un moteur de recherche [ par baboun ] Bonjour, je viens crier au secours.Je tente d'insérer un système de troncature dans mon moteur de recherche php sur base de donnée MySQL.(Sans vouloir Moteur de Recherche [ par MAsterC ] Salut à tous,je suis en train de développé un moteur de recherche, puis il me manque seulement la "recherche par mot clé" c'est à dire que... si je ma moteur de recherche sans BDD [ par Zalexiel ] salut!!!!j'ai un petit probl&#232;me! je dois faire une sorte de moteur de recherche mais sans utiliser de base de donn&#233;es et je sais pas du tout faire une recherche par mot clé dans un texte [ par maurimaure ] Bonjour, J'ai des docs en registr&#233;s dans ma BDD,&nbsp; j'aimerais faire des r&#233;cherches par mots cl&#233;s sur ces docs enfin de n'en affi recherche de texte [ par RM50Man ] Bonjour , comment faire pour rechercher du texte par exemple:je veux rechercher un mot qui commence par Aselect * from table where mot = 'A*'On fait c de l'aide pour un moteur de recherche [ par maurimaure ] Bonjour, Je voudrais développer un moteur de recherche pour un site internet qui contient deux partie : 1-partie dynamyque (BDD MySql) 2-partie statiq moteur de recherche : en dur, en php-mysql... ?? [ par hdh ] Bonsoir ! Je suis en train de faire un site internet.... et pour aider l'internaute &#224; trouver facilement l'info je voudrais mettre en place un mo moteur de recherche [ par el_bassir ] j'aimerai realiser un moteur de recherche interne, vous allez dire que c simple, mais l probleme c k j vx qu'a chaque fois que j tappe ou j supprime u


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,390 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.