|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||||
|
Invité régulier
![]() Inscription : octobre 2006 Messages : 17 ![]() |
Salut à tous,
je suis en train de bosser sur un site de petites annonces. On me demande de pouvoir réaliser des recherches dans les petites annonces suivant un formulaire multicritères (recherche par mot clés, recherche par rubriques, et recherche par date de création d'annonce). C'est à dire qu'un utilisateur pourra faire une recherche en remplissant un ou plusieurs champs du formulaire. Voici le code du formulaire: Code :
C'est à dire (par exemple): INFORMATIQUE P.A. 1 P.A. 2 IMMOBILIER P.A. 1 ect... Or je n'arrive pas à faire ma reqête ou plutot je ne suis pas sûr de moi sur le coup Code :
Code :
SELECT id_rub,id_ann,contenu,date_ann FROM annonces WHERE id_ann='Recherche' OR contenu LIKE '%free%' ORDER BY id_ann ; Je ne sais pas si j'ai été assez explicite... Merci de votre aide |
||||
|
|
00
|
|
|
#2 |
|
Membre chevronné
![]() |
Tu dis que cela doit être affiché par rubrique et tu fais un order by sur id_ann, c'est pas très logique?
Ensuite, mieux vaut, par convention utiliser = que LIKE à moins que LIKE ait des vertues dont je ne sois pas au courant. Ensuite pour des % avant et après $motcle. Et puis est-ce que tu as récupéré les infos du formulaire par $_POST[]? car maintenant le register_globals et à OFF par défaut. |
|
|
00
|
|
|
#3 | |||
|
Membre émérite
![]() ![]() Inscription : novembre 2004 Messages : 735 ![]() |
Citation:
Dans le cadre de son script, le mot clé peut être présent un peu n'importe où dans le contenu, donc le LIKE s'impose. Rien à redire sur sa requete. Pour le problème, je pense que c'est parceque tu ne testes pas la variable id_ann pour savoir si celle-ci a été renseigné dans le formulaire. En effet, si l'utilisateur ne choisit rien, la valeur value ( en l'occurrence Recherche) est quand même transmise. Il suffirait de faire un test avant la requête, du genre Code :
__________________
Pierre 1. Dans le manuel ( PHP, MySQL,..., rayez la mention inutile), tu te plongeras à deux fois plutôt qu'aucune. 2. Dans la doc php, tu liras attentivement les sections Chaines de caractères, Tableaux et Système de fichiers 3. Un code rapide c'est bien, un code maintenable c'est mieux ... Why was the font tag an orphan ? Because it didn't have a font-family. |
|||
|
|
00
|
|
|
#4 | |
|
Membre actif
![]() Inscription : juillet 2003 Messages : 257 ![]() |
Citation:
En mettant "OR" dans ta requete, plus l'utilisateur choisit de critere plus le nombre d'annonces affichées augmente (ce qui est absurde à mon avis). Je ne sais pas pour les autre! |
|
|
|
00
|
|
|
#5 | |
|
Membre émérite
![]() ![]() Inscription : novembre 2004 Messages : 735 ![]() |
Citation:
Ah je l'avais pas vu ça. D'ailleurs dans mon script j'ai corrigé sans m'en rendre compte. L'expérience surement
__________________
Pierre 1. Dans le manuel ( PHP, MySQL,..., rayez la mention inutile), tu te plongeras à deux fois plutôt qu'aucune. 2. Dans la doc php, tu liras attentivement les sections Chaines de caractères, Tableaux et Système de fichiers 3. Un code rapide c'est bien, un code maintenable c'est mieux ... Why was the font tag an orphan ? Because it didn't have a font-family. |
|
|
|
00
|
|
|
#6 |
|
Invité régulier
![]() Inscription : octobre 2006 Messages : 17 ![]() |
Merci pour les réponses
bon, j'aurais peut etre du préciser que je débute et que j'ai encore un peu de mal avec l'execution de certaines requêtes. Mais effectivement, l'ORDER BY sur l'id_ann ne me parait pas, avec le recul, des plus logiques je vais faire au mieux en tenant compte des diverses remarques et je reviens vous voir Merci à tous... |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com