begin process at 2012 02 13 01:37:17
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Application

 > MOTEUR DE RECHERCHE DANS UNE BDD

MOTEUR DE RECHERCHE DANS UNE BDD


 Information sur la source

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

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

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

Auteur : HenvimaL

Ecrire un message privé
Commentaire sur cette source (19)
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é !


 Sources du même auteur

INSCRIPTION MEMBRE - AUTHENTIFICATION PAR COOKIES 24H ->> MY...
INSCRIPTION, AUTHENTIFICATION &GT; EN .TXT &GT; FACILE

 Sources de la même categorie

Source avec Zip Source avec une capture PHPREPOGENERATOR + REPO (WIN) par alvinp
Source avec Zip IPHONE - ICÔNE D'APPEL TÉLÉPHONIQUE SUR L'ÉCRAN D'ACCUEIL par Rainbow
Source avec Zip Source avec une capture [APP WEB]SERVEUREXPLOREUR par thematrix01
Source avec Zip Source avec une capture MY.BOOKMARKS par inwebo
Source avec Zip M.V.C M.E.D par faceme

 Sources en rapport avec celle ci

Source avec Zip Source avec une capture MOTEUR DE RECHERCHE SUR BASE MYSQL FULLTEXT ET BOOLEAN AVEC ... par cod57
SEARCHMOTS par boscoauhunier
GOOGLE SEARCH PARSER par caviar
RECHERCHE PAR MOTS CLEFS - DÉCOUPAGE D'UNE PHRASE EN MOTS - ... par J_G
Source avec Zip Source avec une capture MOTEUR DE RECHERCHE TRÈS SOFISTIQUÉ par papipsycho

Commentaires et avis

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.

Commentaire de HenvimaL le 28/09/2006 19:26:28

je comprends pas ce que tu veux dire ...

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)

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

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

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

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.

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

Commentaire de garfield90 le 29/09/2006 09:32:44

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

Commentaire de coockiesch le 29/09/2006 09:48:01

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

@++

R@f

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" ;)

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

Commentaire de younes371 le 29/09/2006 16:20:10

Merci cookiesh

Commentaire de guismo1er le 29/09/2006 22:21:04

utilise REGEXP , c bcp mieux pour tes requetes

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.

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

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

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!

Commentaire de pylsener le 06/12/2010 05:06:04

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!

 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 moteur de recherche php [ par walidbnchakroun ] je suis en train de programmer un petit moteur de recherche en php/mysql. Mon problème c'est comment gèrer les AND et OR dans la partie mot clé: J'uti moteur de recherche bilingue [ par webfattah ] bonjour à tous, je suis en train de développer un site dans deux langue arabe et français. le site comprend un moteur de recherche. pour la version f script pour faire un moteur de recherche [ par aminagu ] bjr tout le monde j etais entrain de chercher d un code source pour faire un moteur de recherche et j ai compris le principe mais j arrive pas a c 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


Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
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

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,796 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales