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. :)
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!
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...
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, ... )
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.
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
On peut efectivement faire ça en une seule requete mysql:
$result = mysql_query($sql,$c);
$nb_results = mysql_num_rows($result);
... lecture des resultats
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 ...
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)
6 déc. 2010 à 05:06
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!
26 juil. 2008 à 11:17
19 oct. 2006 à 18:14
5 oct. 2006 à 00:04
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...
30 sept. 2006 à 12:21
Bon rien à ajouter sur le code...courage, avec un peu de lecture tu l'amélioreras facilement.