MOTEUR DE RECHERCHE DANS UNE BDD

malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 - 28 sept. 2006 à 16:48
cs_pylsener Messages postés 1 Date d'inscription samedi 4 décembre 2010 Statut Membre Dernière intervention 6 décembre 2010 - 6 déc. 2010 à 05:06
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/39722-moteur-de-recherche-dans-une-bdd

cs_pylsener Messages postés 1 Date d'inscription samedi 4 décembre 2010 Statut Membre Dernière intervention 6 décembre 2010
6 déc. 2010 à 05:06
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
26 juil. 2008 à 11:17
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
19 oct. 2006 à 18:14
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
5 oct. 2006 à 00:04
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 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
30 sept. 2006 à 12:21
les index FULLTEXT sont encore mieux.
Bon rien à ajouter sur le code...courage, avec un peu de lecture tu l'amélioreras facilement.
cs_guismo1er Messages postés 76 Date d'inscription vendredi 21 mars 2003 Statut Membre Dernière intervention 12 mars 2009
29 sept. 2006 à 22:21
utilise REGEXP , c bcp mieux pour tes requetes
younes371 Messages postés 502 Date d'inscription mercredi 29 décembre 2004 Statut Membre Dernière intervention 20 mars 2012
29 sept. 2006 à 16:20
Merci cookiesh
coockiesch Messages postés 2268 Date d'inscription mercredi 27 novembre 2002 Statut Membre Dernière intervention 13 septembre 2013 4
29 sept. 2006 à 11:15
Oui, en tant que boolay reconnu, je connais bien le: tu ==> [ ] ! :-D

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

@++

R@f
cs_garfield90 Messages postés 388 Date d'inscription lundi 7 juillet 2003 Statut Webmaster Dernière intervention 10 février 2009
29 sept. 2006 à 11:05
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" ;)
coockiesch Messages postés 2268 Date d'inscription mercredi 27 novembre 2002 Statut Membre Dernière intervention 13 septembre 2013 4
29 sept. 2006 à 09:48
Garfield90: pas compris! Tu aurais faire quoi de pire?

@++

R@f
cs_garfield90 Messages postés 388 Date d'inscription lundi 7 juillet 2003 Statut Webmaster Dernière intervention 10 février 2009
29 sept. 2006 à 09:32
Coockiesh, tu m'as devancé mais j'aurais fait pire : => moteur de recherche
coockiesch Messages postés 2268 Date d'inscription mercredi 27 novembre 2002 Statut Membre Dernière intervention 13 septembre 2013 4
29 sept. 2006 à 09:24
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
29 sept. 2006 à 08:12
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.
younes371 Messages postés 502 Date d'inscription mercredi 29 décembre 2004 Statut Membre Dernière intervention 20 mars 2012
29 sept. 2006 à 03:24
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
JulSoft Messages postés 354 Date d'inscription dimanche 3 juin 2001 Statut Membre Dernière intervention 11 mars 2013
29 sept. 2006 à 02:00
On peut efectivement faire ça en une seule requete mysql:
$result = mysql_query($sql,$c);
$nb_results = mysql_num_rows($result);
... lecture des resultats
HenvimaL Messages postés 28 Date d'inscription dimanche 18 mai 2003 Statut Membre Dernière intervention 7 juin 2010
28 sept. 2006 à 23:06
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 ...
cs_garfield90 Messages postés 388 Date d'inscription lundi 7 juillet 2003 Statut Webmaster Dernière intervention 10 février 2009
28 sept. 2006 à 20:17
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)
HenvimaL Messages postés 28 Date d'inscription dimanche 18 mai 2003 Statut Membre Dernière intervention 7 juin 2010
28 sept. 2006 à 19:26
je comprends pas ce que tu veux dire ...
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
28 sept. 2006 à 16:48
hello,

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