|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||||||||
![]() ![]() |
Bonjour,
Suite à cette discussion relatant mes déboires pour avoir les 36682 communes françaises dans une liste déroulante, j'essaie de mettre en oeuvre l'auto-complétion avec un Zend_Dojo_Form_Element_FilteringSelect, suivant ce tutoriel. En dehors du fait que j'ai le même problème de mauvais rendu que dans cette autre discussion, j'ai trois autres problèmes : 1) Si l'adresse est déjà complète avec sa commune, à partir des données de l'étudiant en BDD, lors de l'affichage du formulaire, la FilteringSelect n'affiche pas la commune. ![]() 2) J'ai beau taper le début d'une commune existante ou cliquer sur le rectangle du bout de la zone, censé contenir la flèche pour dérouler la liste, rien ne se passe ! ![]() 3) Si je tape le nom d'une commune existante en entier dans la zone et que je passe au champ suivant du formulaire, seules les trois premières lettres de la commune s'affichent ! ![]() Voici mon code... Dans le formulaire Infosperso.php : Code :
Code :
Code :
Code :
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique. Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework... « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau) À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française ! Linuxiens, comptez-vous ! |
||||||||
|
00
|
|
|
#2 | ||||
|
Membre expérimenté
![]() Emmanuel BelairDéveloppeur informatique Inscription : septembre 2004 Messages : 463 ![]() |
J'ai fait ceci sur un projet, un sélecteur de couleur:
Code :
Code :
__________________
Les idiots sont ceux qui ne posent jamais de question! |
||||
|
|
00
|
|
|
#3 |
![]() ![]() |
Quand je vois ton code, je subodore que j'ai un problème au niveau du chemin dans setStoreParams.
J'ai complété cette ligne ainsi dans le formulaire : Code :
->setStoreParams(array('url' => '/accueiletudiant/listecommunes')) Mais pas de changement dans le comportement de mon formulaire. À quoi correspond le chemin que tu indiques dans ton code : /catalog/color/colorstojson ? Le chemin indiqué dans la barre d'adresse du navigateur pour accéder à la page est celui-ci : localhost/stagmas/public/accueiletudiant/infosperso?infosperso=Compl%C3%A9ter+mes+informations+personnelles
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique. Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework... « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau) À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française ! Linuxiens, comptez-vous ! |
|
00
|
|
|
#4 |
|
Membre expérimenté
![]() Emmanuel BelairDéveloppeur informatique Inscription : septembre 2004 Messages : 463 ![]() |
ça correspond à l'url pour récupérer le json:
module: catalog controller: color action: tojson J'utilise ZF en application modulaire, si ce n'est pas ton cas, tu n'as juste qu'à indiquer le controlleur et l'action
__________________
Les idiots sont ceux qui ne posent jamais de question! |
|
|
00
|
|
|
#5 | |||
![]() ![]() |
Donc apparemment, j'ai correctement modifié mon code mais...
Dans le code source de la page, je vois ceci : Code :
EDIT : Je viens d'activer Firebug et j'y trouve ceci : Citation:
Apparemment, il essaie de trouver accueiletudiant/listecommunes directement à la racine de localhost !
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique. Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework... « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau) À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française ! Linuxiens, comptez-vous ! |
|||
|
00
|
|
|
#6 |
|
Membre expérimenté
![]() Emmanuel BelairDéveloppeur informatique Inscription : septembre 2004 Messages : 463 ![]() |
oui c normal pourquoi ça ne fonctionne toujours pas?
EDIT: accueiletudiant/listecommunes doit t'emmener au controleur accueiletudiant et action listecommunes.... tu as peux-etre aussi un un probleme de baseUrl.... je ne sais pas si ça se configure dans Dojo.... Sinon entre l'url complete pour voir Moi je n'aime pas travailler avec des url genre localhost, ça génère toujours ce genre de probleme, surtout que en production ce n'est pas comme ça. Je préfère utiliser un DNS local et me faire des domaines locaux du style monsite.dom
__________________
Les idiots sont ceux qui ne posent jamais de question! |
|
|
00
|
|
|
#7 | |||
![]() ![]() |
J'ai effectivement essayé d'entrer l'url complète et maintenant je trouve cette erreur :
Citation:
je redonne le code de ma fonction listecommunesAction : Code :
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique. Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework... « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau) À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française ! Linuxiens, comptez-vous ! |
|||
|
00
|
|
|
#8 | ||
|
Membre expérimenté
![]() Emmanuel BelairDéveloppeur informatique Inscription : septembre 2004 Messages : 463 ![]() |
Pour Zend_Dojo_Data, le fetchPairs ne va pas fonctionner car il attend un tableau de tableaux associatifs avec identifier.
Code :
__________________
Les idiots sont ceux qui ne posent jamais de question! |
||
|
|
00
|
|
|
#9 | ||||
![]() ![]() |
Avec fetchAll seul, j'obtiens ceci :
Citation:
Code :
Citation:
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique. Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework... « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau) À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française ! Linuxiens, comptez-vous ! |
||||
|
00
|
|
|
#10 | ||
|
Membre expérimenté
![]() Emmanuel BelairDéveloppeur informatique Inscription : septembre 2004 Messages : 463 ![]() |
Pour le toArray(), ça dépend comment ton fetchall() te renvoie le resultat, normalement si tu touche rien a la config il doit te renvoyer un tableau.... au pire un debug te diras ce que tu obtiens.
En ce qui concerne le message d'erreur, c'est parce que tu as mal recopié mon code: Code :
__________________
Les idiots sont ceux qui ne posent jamais de question! |
||
|
|
00
|
|
|
#11 |
![]() ![]() |
J'ai fait cette correction mais maintenant ça me bloque carrément Firefox !
La page s'affiche, Firebug n'affiche pas d'erreur, le dernier message est le chargement de listecommunes, Firefox dit dans la barre d'état qu'il a terminé, mais je ne peux rien faire sur la page, pas même poser le curseur dans une zone de texte ! Et ça bloque toutes les fenêtres Firefox ! Vu qu'apparemment c'est le volume de données qui pose problème, y aurait-il un moyen de ne rien charger au chargement de la page et de ne commencer à rapatrier une liste de communes que lorsque l'utilisateur tape le premier caractère dans la zone de texte ? En gros je m'orienterais non pas vers une filteringselect mais une simple zone de texte à auto-complétion.
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique. Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework... « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau) À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française ! Linuxiens, comptez-vous ! |
|
00
|
|
|
#12 |
|
Membre expérimenté
![]() Emmanuel BelairDéveloppeur informatique Inscription : septembre 2004 Messages : 463 ![]() |
T'es-t-il possible de limiter le nombre de résultat à une centaine de communes par exemple juste pour tester que le combobox fonctionne bien?
Comme ça au moins tu seras sûr que ça viens de là. Ensuite, tu teste avec la totalité des communes et si c'est trop long ou que ça plante c'est qu'il va falloir trouver un autre moyen en javascript. Tu fait un attribut onkeyup="updateCommunes()" sur ton combobox et la fonction updatecommune fait une requete et repeuple en données le combobox. Je ne l'ai jamais fait comme ça donc je ne peux pas te dire si c'est une bonne solution ou pas
__________________
Les idiots sont ceux qui ne posent jamais de question! |
|
|
00
|
|
|
#13 | |
![]() ![]() |
Ça fonctionne mais à partir de 10000 communes, ça commence à ramer.
J'ai trouvé quelque part la solution au problème de rendu en ajoutant dans le layout class="tundra" à la balise <body>. J'ai aussi maintenant la commune enregistrée en BDD qui s'affiche. Je ne sais pas si c'est dû à l'ajout de la classe tundra ; maintenant ça fonctionne aussi avec toutes les communes mais c'est trop long et Firefox envoie des alertes : Citation:
J'en arrive quand même à mon idée d'auto-complétion seulement quand l'étudiant commence à taper une lettre. Il y aurait au maximum 6008 communes chargées avec la lettre S. Je vais explorer queryReadStore à la place de itemFileReadStore.
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique. Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework... « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau) À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française ! Linuxiens, comptez-vous ! |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com