Filtre sur listes déroulantes peuplées via CSV
Bonjour à tous,
je viens faire un tour côté PHP moi qui n'y ai jamais touché et qui suis plutôt du côté .Net du forum. J'espère que vous pourrez m'aider :)
Je suis en train d'essayer de modifier un site existant pour dépanner et je ne trouve pas comment faire ce que je souhaite.
En gros, j'ai deux listes déroulantes, une pour des codes postaux, la seconde pour des villes.
Les deux listes sont construites ainsi :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| <div class="input-field">
<select id="CODE_POSTAL" name="CODE_POSTAL" >
<?php
foreach($form->zip_code as $key => $value){
echo "<option value='".$key."'>".$value."</option>";
}
?>
</select>
<label for="CODE_POSTAL">Code postal*</label>
</div>
<div class="input-field">
<select id="VILLE" name="VILLE" >
<?php
foreach($form->city as $key => $value){
echo "<option value='".$key."'>".$value."</option>";
}
?>
</select>
<label for="VILLE">Commune*</label>
</div> |
Côté Form.php, la fonction qui ramène les valeurs est la suivante :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13
| function __construct(){
$csv = file("..\..\communes.csv");
foreach($csv as $key => $value){
$explode = explode(";",$value);
$explode[1] = str_replace("\n", "", $explode[1]);
if($explode[0] != 'CODE POSTAL'){
$this->zip_code[$explode[0]] = $explode[0];
$this->city[$explode[1]] = $explode[1];
}
}
ksort($this->zip_code);
ksort($this->city);
} |
Le problème rencontré est que les listes ne tiennent pas compte l'une de l'autre.
On peut donc sélectionner un CP puis une VILLE qui ne matchent pas dans le CSV initial.
Je cherche un moyen de rendre les listes dépendantes :
- si j'ai sélectionné un CP, seules les communes sur ce CP dans le csv sont affichées dans la liste de communes
- si j'ai sélectionné une ville, seules les CP Ssur cette ville dans le csv sont affichés dans la liste de CP.
Si quelqu'un a des pistes à me donner sur la manière de procéder sans révolutionner le code si possible, je suis preneur.
Merci d'avance.