|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Membre du Club
![]() Inscription : décembre 2008 Messages : 315 ![]() |
Bonjour,
Voila mon souci j'ai un formulaire qui comporte 5 input type text ce formulaire permet de requêter sur ma base oracle donc juste un select. J'ai donc 5 champs que l on peut remplir nom / prenom / code postal /date de naissance /dep de naissance si je remplis le nom avec ce select Code sql :
SELECT * FROM matable WHERE nom='$nom' il m affiche bien les lignes souhaités. Le problème est que si je renseigne le nom et le code postal par exemple mon select n'est plus adapté il faudrait faire un select du genre Code sql :
SELECT * FROM matable WHERE nom='$nom' AND cp='$cp' Mon souci est que j'ai 5 champs donc je vous laisse entrevoir le nombre de possibilités ... Y a t il un moyen de faire simplement et d'éviter de faire une quarantaine de Code :
|
||
|
|
00
|
|
|
#2 | ||
|
Membre Expert
![]() Baptiste ROUSSELÉtudiant Inscription : janvier 2011 Messages : 810 ![]() |
Ta requête SQL n'est qu'une simple chaîne de caractère que tu peux aisément construire dynamiquement en fait.
Un petit exemple de ce qu'il est possible de faire : Code php :
__________________
|
||
|
|
00
|
|
|
#3 |
|
Membre du Club
![]() Inscription : décembre 2008 Messages : 315 ![]() |
Merci pour la réponse transgohan
mais j'ai du mal à saisir pour cette partie Code :
if( isSet($_POST['value']) && $_POST['value'] == 1) je mets du genre Code :
if( isSet($_POST['nom']) && $_POST['prenom'] == 1) a quoi correspond "un champ" et a quoi correspond "test" ? Merci |
|
|
00
|
|
|
#4 |
|
Invité de passage
![]() Développeur Web Inscription : août 2011 Messages : 3 ![]() |
dans ton exemple :
unchamp serait code_postal test serait la valeur de ton input (75001 par exemple) et ainsi de suite |
|
|
00
|
|
|
#5 | ||
|
Membre Expert
![]() Baptiste ROUSSELÉtudiant Inscription : janvier 2011 Messages : 810 ![]() |
Un petit peu d'algo pour mieux comprendre.
Code :
Mon exemple était statique, c'est à dire que la condition WHERE que je concaténais était toujours la même. A savoir rechercher les n-uplets donc le champ nommé "unChamp" aurait la valeur égale à "test". Dans ton cas c'est bien plus le second exemple qui te sera utile vu que c'est la valeur postée que tu souhaites rechercher.
__________________
|
||
|
|
00
|
|
|
#6 | ||
|
Membre confirmé
![]() Développeur informatique Inscription : avril 2011 Messages : 196 ![]() |
On pourrait construire la partie Where en travaillant directement sur $_POST, c'est un tableau associative comme un autre, en supprimant les entrées vides, ensuite on construit un tableau avec d'une part le nom de la colonne et de l'autre sa valeur. il suffit ensuite de joindre ce tableau avec des 'AND' entre ces elements.
Code :
|
||
|
|
00
|
|
|
#7 | |||
|
Membre confirmé
![]() Développeur informatique Inscription : avril 2011 Messages : 196 ![]() |
Citation:
Pour éviter l'attaque par injection dans la clause where, une methode serai d'utiliser mysql_real_escape_string, ou bien de préparer la requete avant de l'exécuter. Regarde ici |
|||
|
|
00
|
|
|
#8 |
|
Membre du Club
![]() Inscription : décembre 2008 Messages : 315 ![]() |
Merci à tous pour vos réponses,
j'ai utilisé la méthode de fab256 qui a l'air d'ètre au top sauf que quand j'affiche un echo de ma requete SQL voilà ce qui sort SELECT * FROM MATABLE WHERE nom = 'dupont' AND prenom = 'alain' AND apparemment un AND se glisse à la fin de ma requête et semble la faire capoter j'avoue ne pas savoir comment faire que le dernier AND ne s'affiche pas... Merci encore |
|
|
00
|
|
|
#9 |
|
Membre confirmé
![]() Développeur informatique Inscription : avril 2011 Messages : 196 ![]() |
J'a testé la portion de code et ca marche bien chez moi.
La ligne Évalue chaque valeur du tableau $_POST si c'est une chaine vide alors il est supprimé. Peut-tu poster le code de ton formulaire pour mieux voir? |
|
|
00
|
|
|
#10 | ||
|
Membre du Club
![]() Inscription : décembre 2008 Messages : 315 ![]() |
voici mon code en entier
Code :
|
||
|
|
00
|
|
|
#11 | ||
|
Membre du Club
![]() Inscription : décembre 2008 Messages : 315 ![]() |
Je viens de comprendre pourquoi en fait voici le retour du echo $query en entier
Code :
SELECT * FROM matable WHERE P_N_SS = '181089154789501' AND P_NOM = 'DUPONT' AND ok = 'envoyer' Je ne sais pas pourquoi j ai contourner en faisant un Code :
mais si possible j'aimerais que ce dernier AND n'apparaisse pas ... |
||
|
|
00
|
|
|
#12 | ||
|
Membre confirmé
![]() Développeur informatique Inscription : avril 2011 Messages : 196 ![]() |
Le bouton Ok fait partie du $_POST, si tu le laisse tu l'aura dans ton requête SQL.
Code :
<input type="submit" value="envoyer" NAME="ok"/> Code :
|
||
|
|
00
|
|
|
#13 |
|
Membre du Club
![]() Inscription : décembre 2008 Messages : 315 ![]() |
ca marche nickel
merci pour tout et bonne journée |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com