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 :


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)....
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...


Voici mon VilleForm.class.php :

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]');
  }
}
En espérant avoir de l'aide.
Merci d'avance pour votre aide !