|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||||||
|
Invité de passage
![]() Inscription : mai 2007 Messages : 7 ![]() |
Bonjour
Dans le cadre de mon stage, je dois créer un module recherche multi-critères dans une base de données. A l'aide d'un menu déroulant (MD), l'utilisateur sélectionne le critère de recherche désiré. Puis avec un autre MD, il sélectionne le critère de comparaison (contient, commence par, fini par, supérieur ou égal .....). Enfin, il remplit un champ texte dans lequel il indique ce qu'il souhaite recherché. Jusque là, ça marche, je recherche tout d'abord dans la table les différents critères de recherche avec une requête MySQL, idem pour le critère de comparaison. J'assigne tout ça à ma template Smarty, laquelle les affiche sans problème. Fichier searchbdd.php Code :
Code :
Et mon problème apparaît maintenant. A la suite de mon tableau, j'ai un bouton tout ce qu'il y a de plus classique. Lorsque je clique dessus, je "retourne" dans mon fichier php afin de créer dynamiquement la requête qui sera lancée, en fonction de ce qu'a sélectionné l'utilisteur. Ca marche super pour le comparatif, je le récupère sans problème, cependant je ne parviens pas à récupérer la valeur du critère de recherche Fichier searchbdd.php Code :
Vouala. J'ai essayé : 1/ $Choix_Critere --> affiche "Array" 2/ $Choix_Critere.libelle --> affiche "Arraylibelle" 3/ $Choix_Critere->libelle --> affiche rien du tout ^^ 4/ $Choix_Critere["libelle"] --> affiche "A", et je sais pas pourquoi xD Je débute en php, et mon entreprise m'a fait découvrir smarty, donc je débute encore plus là dedans ^^ donc soyez indulgents Merci d'avance si quelqu'un trouve la solution à mon problème |
||||||
|
|
00
|
|
|
#2 |
|
Invité de passage
![]() Inscription : mai 2007 Messages : 7 ![]() |
Personne ?
Je suis assez embété, j'ai testé diverses solutions trouvées sur le net, et aucune ne fonctionne. Quelque chose doit m'échapper, mais je ne vois pas quoi. Ca m'embête bien, parce que tant que je n'ai pas résolu ce problème, je ne peux pas avancer dans mon projet |
|
|
00
|
|
|
#3 | |
|
Membre Expert
![]() ![]() ERIC POMMEREAUIngénieur intégration Inscription : décembre 2004 Messages : 683 ![]() |
Bonjour,
Citation:
Dans ton code PHP tu utilises $Choix_Critere comme un entier Code PHP :
if(($critere != "") && ($Choix_Critere != "-1") && ($Choix_Comparatif != "-1")) Secundo je ne vois pas où $Choix_Critere est passé à Smarty, il y a peut être confusion entre les deux (Smarty et PHP) ? Ce que je te conseille... 1. assures toi que le tableau associatif a bien été créé côté PHP (print_r(...)) 2. Pense à assigner ton tableau à ton objet smarty. 3. utilises la console de debuggage Smarty (il suffit de mettre dans ton template la fonction: {debug} --> il ouvrira un popup) pour voir si tes données sont bien dans le 'contexte' SMARTY. 4. La syntaxe de récupération pour ce cas de figure précis (tabelau associatif) est {$Choix_Critere.libelle}... avec des acollades. Sinon tu commences fort si tu débutes @+
__________________
Eric POMMEREAU Articles : Smarty, JpGraph, Ajax YUI, IPython, Design patern strategy en PHP, Firebug Site : Antiquités du Marché des Ternes |
|
|
00
|
|
|
#4 | ||||
|
Invité de passage
![]() Inscription : mai 2007 Messages : 7 ![]() |
C'est dans la partie PHP que je galère, la partie Smarty fonctionne.
Oui, j'utilise $Choix_Critere comme un entier dans mon if, mais c'est uniquement pour tester si l'utilisateur a sélectionné un critère. Mais ensuite, pour récupérer la valeur de ce critère (donc le nom du champ correspondant dans la table), ben ça fonctionne plus ^^ (le fait de l'utiliser comme un entier). $Choix_Critere n'est pas passé à Smarty justement, vu que c'est le nom de mon menu déroulant. Je sais pas si ça pose problème ou pas ..... Moi ce que je cherche à faire, c'est récupérer dans ma partie PHP la valeur du menu déroulant nommé $Choix_Critere, cette valeur étant passée à smarty par l'intermédiaire de mon tableau associatif $liste_criteres Code :
Code :
J'espère que je suis assez clair ![]() EDIT : j'avais bien entendu déjà fait tous les tests que tu m'as conseillés (tableau existant, debug côté smarty) avant de poster et le problème ne vient pas de là EDIT 2 : vi je débute dans php, enfin j'avais quelques bases quand même, mais je n'avais encore rien fait d'aussi poussé. Quand à Smarty, je connaissais même pas avant de commencer mon stage ^^ |
||||
|
|
00
|
|
|
#5 |
|
Invité de passage
![]() Inscription : mai 2007 Messages : 7 ![]() |
Ah bah j'ai trouvé tout seul comme un grand ^^
En affichant le source de ma page en "dynamique", je me suis rendu compte que toutes les options du menu déroulant portaient le même nom : "Array" C'est logique vu que je leur donnais le nom de mon tableau associatif Code :
<option value="{$Critere}" style="background-color:{cycle values="#EAF4F7, #FFFFFF;"}"> {$Critere.libelle}</option>
Code :
<option value="{$Critere.libelle}" style="background-color:{cycle values="#EAF4F7, #FFFFFF;"}"> {$Critere.libelle}</option>
Et maintenant je peux effectivement récupérer la valeur du critère sélectionnée par l'utilsateur via la variable $Choix_Critere qui se trouve être le nom de mon menu déroulant Merci tout de même à toi Eric |
|
|
00
|
|
|
#6 |
|
Membre Expert
![]() ![]() ERIC POMMEREAUIngénieur intégration Inscription : décembre 2004 Messages : 683 ![]() |
Comme ça ?
Code :
<option value="{$Critere.field}" style="background-color:{cycle values="#EAF4F7, #FFFFFF;"}"> {$Critere.libelle}</option>
__________________
Eric POMMEREAU Articles : Smarty, JpGraph, Ajax YUI, IPython, Design patern strategy en PHP, Firebug Site : Antiquités du Marché des Ternes |
|
00
|
|
|
#7 |
|
Membre Expert
![]() ![]() ERIC POMMEREAUIngénieur intégration Inscription : décembre 2004 Messages : 683 ![]() |
Non tu as raison, j'ai refait des tests et effectivement Field contient bien le libellé de ta colonne.
__________________
Eric POMMEREAU Articles : Smarty, JpGraph, Ajax YUI, IPython, Design patern strategy en PHP, Firebug Site : Antiquités du Marché des Ternes |
|
00
|
|
|
#8 |
|
Invité de passage
![]() Inscription : mai 2007 Messages : 7 ![]() |
Là, j'avoue ne pas saisir ^^
Moi si je mets {$Critere.Field}, ben ça me renvoie une chaîne vide ^^ alors que {$Critere.libelle} me renvoie bien le nom du champ de la table. Enfin, ce n'est pas bien grave, ça fonctionne ^^ (enfin, ça fonctionne moyen car mon mysql_query me renvoie une erreur et je sais pas pourquoi |
|
|
00
|
|
|
#9 |
|
Membre Expert
![]() ![]() ERIC POMMEREAUIngénieur intégration Inscription : décembre 2004 Messages : 683 ![]() |
Oui c'est logique, la clé 'libellé' est crée par toi après récupération du champ field:
Code PHP :
$liste_champs[] = array("libelle" => $champs->Field, "type" => $champs->Type); Parfait... @+
__________________
Eric POMMEREAU Articles : Smarty, JpGraph, Ajax YUI, IPython, Design patern strategy en PHP, Firebug Site : Antiquités du Marché des Ternes |
|
00
|
Copyright © 2000-2012 - www.developpez.com