Bonjour,

je me prends la tête depuis plusieurs jours avec JQuery...
J'ai une page avec un formulaire contenant plusieurs listes déroulantes à mettre à jour en Ajax en fonction des choix effectués par l'utilisateur.

Je vais limiter l'exemple à 2 listes car j'ai juste besoin de comprendre le principe.

J'ai deux tables "pays" et "region" avec une association "paysregionville" dont voici les schémas :

Table pays :

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
24
25
 
Pays:
  tableName: pays
  columns:
    id:
      type: string(2)
      fixed: true
      primary: true
      autoincrement: true
    nom:
      type: string(45)
    devise_id:
      type: integer(1)
      notnull: true
    volume_id:
      type: integer(1)
      notnull: true
    langue_id: integer(1)
  relations:
    Devise:
      local: devise_id
    Volume:
      local: volume_id
    Langue:
      local: langue_id
table region:

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
24
25
 
Region:
  tableName: region
  columns:
    id:
      type: integer(4)
      primary: true
      autoincrement: true
    niveau:
      type: integer(1)
      notnull: true
    nom:
      type: string(165)
      notnull: true
    code:
      type: string(10)
      default: ''
    region_id:
      type: integer(4)
      default: null
  relations:
    Region:
      local: region_id
      foreign: id
      foreignAlias: Regions
table paysregionville:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
 
Paysregionville:
  tableName: paysregionville
  columns:
    pays_id:
      type: string(2)
      fixed: true
      primary: true
    region_id:
      type: integer(4)
      primary: true
    ville_id:
      type: integer(4)
      primary: true
Voici mon formulaire avec les listes déroulantes :

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
 
<?php use_helper('Object'); ?>
<?php use_helper('Javascript'); ?>
<div class="menu">
    <form id="filtres" method="post">
        <span class="filtre">Pays
          <?php
          $liste = '<option value="0"></option>';
          foreach ($pays as $p):
            $liste .= '<option value="'.$p['id'].'">'.$p['nom'].'</option>';
          endforeach;
          echo select_tag('idPays', $liste) ?>
        </span>
        <span class="filtre">Région 1
        <?php echo select_tag('region1', '<option value="0">&nbsp;</option>)') ?>
        </span>
    </form>
</div>
Voici le fichier javascript permettant de faire la mise à jour de la liste region1 en fonction de la valeur de la liste pays :

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
 
$(document).ready(function(){
  $('#idPays').change(function() { 
    $.ajax({ 
      url: "?????", 
      type: "POST", 
      data: $(this).val(), 
      success: function(regions){ 
        $('#region1').html(regions);
        } ,
        error: function(msg){
          alert("erreur : "+msg);
        }
    });
  });
});
Je ne sais pas quoi mettre dans l'URL, j'ai déjà essayé plein de choses mais impossible d'accéder au script PHP que voici :

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
24
25
26
27
28
 
<?php
if(isset($_POST['idPays'])) { 
	$idPays = $_POST['idPays'];
 
  $q = Doctrine_Query::create()
  ->select('r.id AS id, r.nom AS nom')
  ->from('Region r, Pays p, Paysregionville prv')
  ->where('r.id = prv.region_id')
  ->andWhere('p.id = prv.pays_id')
  ->andWhere('r.niveau = ?', 1)
  ->andWhere('p.id = ?', $idPays)
  ->orderBy('r.nom');
 
  $aRegions1 = $q->fetchArray();
 
	if(is_array($aRegions1) && count($aRegions1) > 0) {
 
	  foreach($aRegions1 as $region) { 
	    echo '<option value="'.$region['id'].'">'.$region['nom'].'</option><br />'; 
	  }
	} else {
	  echo '<option>Aucune r&eacute;gion de premier niveau dans ce pays</option>'; 
	}
} else { 
  echo '<option>Impossible de trouver la liste des r&eacute;gions</option>'; 
}
?>
Voici où se situent les différents fichiers :

formulaire:
C:\wamp\www\mc2\apps\moderation\modules\mfStations\templates\indexSuccess.php

script javascript:
C:\wamp\www\mc2\web\js\region1.js

script PHP:
C:\wamp\www\mc2\apps\moderation\modules\mfStations\actions\getRegions1.ajax.php
ça fait presque une semaine que je me bats avec ça sans obtenir de résultat et je commence sérieusement à désespérer...
Merci d'avance à celui qui saura m'aider!