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 :
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 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 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
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
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 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 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
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"> </option>)') ?> </span> </form> </div>
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 $(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); } }); }); });
Voici où se situent les différents fichiers :
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égion de premier niveau dans ce pays</option>'; } } else { echo '<option>Impossible de trouver la liste des régions</option>'; } ?>
ça fait presque une semaine que je me bats avec ça sans obtenir de résultat et je commence sérieusement à désespérer...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
Merci d'avance à celui qui saura m'aider!
Partager