[Doctrine] Listes déroulantes et JQuery
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:
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:
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:
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:
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> |
Voici le fichier javascript permettant de faire la mise à jour de la liste region1 en fonction de la valeur de la liste pays :
Code:
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:
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>';
}
?> |
Voici où se situent les différents fichiers :
Citation:
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!