Bonjour à tous,
J'ai pour mission que lorsque l'on écrivent au minimum 2 lettres dans un input, ça rafraichissent les informations dans une liste déroulante en dessous. Les informations contenues dans la liste déroulante proviennent de la base de données :
- Une table 'Ville'
- Un champ 'code_postal'
- Un champ 'nom' pour le nom de la ville
- D'autres champs qui n'ont pas d'intérêt ici.
J'ai téléchargé jQuery.
La première chose que j'essaie de faire, c'est la requête sous propel (c'est la première fois que j'utilise Propel...). Je voudrais récupérer tous les enregistrements 'nom' de la table 'Ville' afin de les mettre dans la liste déroulante.
Le but de la mission :
- Avoir une listé déroulante vide au début.
- Lorsque l'on remplit 2 chiffres pour le input 'code_postal', la liste déroulante se met à jour avec le nom des villes dont le code postal correspond.
Je cherche donc dans un premier temps à faire une bonne requête vers ma table 'Ville' pour ensuite appeler la fonction qui se charge de faire cette requête depuis le javascript. Voici ma fonction :
Je ne sais pas du tout si la requête fonctionne car je n'ai pas trouvé le moyen d'afficher le résultat de la requête dans ma liste déroulante...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 <?php class villeActions extends sfActions { public function executeSearch(sfWebRequest $request) { $c = new Criteria('nom'); $comments = VillePeer::doSelect($c); $c->add(VillePeer::NOM) return self::doSelect($c); } public function executeIndex(sfWebRequest $request)....
Voici mon VilleForm.class.php :
En espérant avoir de l'aide.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 <?php class VilleForm extends BaseVilleForm { protected static $subjects = array('Problème technique' => 'Problème technique', 'Demande de renseignements' => 'Demande de renseignements'); public function configure() { $this->setWidgets(array( 'nom' => new sfWidgetFormSelect(array('choices' => self::$subjects)), 'code_postal' => new sfWidgetFormInput(), )); $this->widgetSchema->setLabels(array( 'nom' => 'Nom de la ville * : ', 'code_postal' => 'Code Postal * : ', )); $this->setValidators(array( 'code_postal' => new sfValidatorNumber(array('required' => true), array('required' => "Ce champ est requis.", 'invalid' => "Veuillez entrer des chiffres.")), 'nom' => new sfValidatorChoice(array('choices' => array_keys(self::$subjects)), array('required' => "Ce champ est requis.")), )); $this->widgetSchema->setNameFormat('ville[%s]'); } }
Merci d'avance pour votre aide !
Partager