Bonjour,
Je vous demande une petite aide car j'ai un comportement bizarre dans mes boucles PHP, je vous décris le problème :
Je fais une boucle sur toutes mes régions et pour chacune d'entre elles j'affiche 3 éléments :
- Une dropdownlist avec pour valeur tous les pays et par défaut celui auquel la région est rattaché est sélectionné.
- Un input text avec pour valeur le nom de la région concernée
- Un autre input text avec pour valeur le symbole de la région.
Le but étant bien sûr de pouvoir modifier chaque valeur est de sauvegardé.
Voici le code HTML + PHP pour obtenir cela :
view.php
actions.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
24
25
26
27
28
29
30
31
32
33
34 <div class="container"> <form method="POST" action="#"> <div class="edit"> <?php foreach($regions as $id => $array): ?> <?php foreach($array as $pays_id => $arValue): ?> <?php foreach($arValue as $cle => $value): ?> <?php if($cle == 'nom'): ?> <select name="truc" class="select_pays"> <?php foreach($pays as $k => $p): ?> <?php foreach($p as $clef => $country): ?> <?php if($clef == 'nom'): ?> <option value="<?php echo $k; ?>" <?php if($k == $pays_id) { echo 'selected="selected"'; } else { echo ''; }?>> <?php echo $country; ?> </option> <?php endif; ?> <?php endforeach; ?> <?php endforeach; ?> </select> <input type="text" name="regions_edit[<?php echo $id; ?>][name]" value="<?php echo $value; ?>" /> <?php else: ?> <?php if($cle == 'symbole'): ?> <input type="text" name="regions_edit[<?php echo $id; ?>][symbole]" value="<?php echo $value; ?>" /><br /> <?php endif; ?> <?php endif; ?> <?php endforeach; ?> <?php endforeach; ?> <?php endforeach; ?> </div> <input type="submit" value="Ok" name="Ok" /> </form> </div>
Pour ceux qui ne connaissent pas Doctrine : les lignes Doctrine_Core:: correspondent à des requêtes SQL.
Le résultat de régions est de la forme :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 $regions = Doctrine_Core::getTable('Regions')->getRegionsWithId(); $this->regions = $regions; echo '<pre>'; die(var_dump($regions)); $pays = Doctrine_Core::getTable('Pays')->getPaysWithId(); $this->pays = $pays;
En l'occurence ici ça vaut :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 array(2) { [id_region]=> array(1) { [pays_id]=> array(2) { ["nom"]=> valeur ["symbole"]=> valeur } } }
Ensuite pays est de la forme :
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 array(2) { [1]=> array(1) { [2]=> array(2) { ["nom"]=> string(12) "Rhône-Alpes" ["symbole"]=> string(2) "RA" } } [2]=> array(1) { [1]=> array(2) { ["nom"]=> string(10) "Bourgogne" ["symbole"]=> string(2) "BO" } } }
Mon problème est donc le suivant :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 array(3) { [id_pays]=> array(2) { ["nom"]=> valeur ["symbole"]=> valeur }
Lorsque je modifie le select de la première région, quel que soit le choix, je récupère toujours la valeur 1 dans $_POST alors que le HTML généré est correct :
Voici le code récupéré par Firebug :
Peu importe quel choix je sélectionnerai la variable $_POST['truc'] sera toujours égale à 1.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 <select class="select_pays" name="truc"> <option value="1"> TT </option> <option selected="selected" value="2"> Bidule </option> <option value="3"> Truc </option> </select>
Alors que si je change le select de la 2e région, là aucun soucis il me retrouve bien la bonne valeur sélectionnée....
Pourriez-vous m'aider à me decanter de ce soucis ?
Merci.
Partager