bonjour à tous, svp veuillez m'aider à résoudre mon problème. j'ai des listes déroulantes liées avec la fonction onchange(), jusque la je n'ai aucun souci tous ce passe nikel, le problème c'est quand j'ai mis ces listes dans une boucle car le user à 5 choix à faire(ma boucle a 5 itération) la 1ere itération ne me pose aucun problème, tandis que la seconde si, quand je change dans la 2eme liste, la 1ere liste se modifie et ne se passe aucun changement sur la seconde et idem pour les autre itération.
voici le code php de mes select (les 5 itération)
Code PHP : 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 <?php $i=1; while($i <= 5) { ?> <select name="secteur" id="secteur" onchange="o()" tabindex="10" > <option value='0'>choisissez le secteur</option> <?php $rep=$bdd->query('SET NAMES `utf8`'); $rep= $bdd->prepare('SELECT * FROM secteur'); $rep->execute(array()); while ($donnees=$rep->fetch()) { ?> <option value="<?php echo $donnees['id_secteur']; ?>"><?php echo $donnees['sect']; ?></option> <?php } ?> </select> <select name="inspection" id="inspection" style='display:inline' > <option value='0'>choisissez l'inspection</option> </select> <?php $i++;} ?>
et voici le code js fonction o()
et voici la page ajax_inspection.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 function o(){ var xhr = getXhr(); // On défini ce qu'on va faire quand on aura la réponse xhr.onreadystatechange = function(){ // On ne fait quelque chose que si on a tout reçu et que le serveur est ok if(xhr.readyState == 4 && xhr.status == 200){ leselect = xhr.responseText; // On se sert de innerHTML pour rajouter les options a la liste document.getElementById('inspection').innerHTML = leselect; } } // Ici on va voir comment faire du post xhr.open("POST","ajax_inspection.php",true); // ne pas oublier ça pour le post xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded'); // ne pas oublier de poster les arguments // ici, l'id du corp sel = document.getElementById('secteur'); idsecteur = sel.options[sel.selectedIndex].value; xhr.send("id_secteur="+idsecteur); }
Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 <select name='inspection' id ='inspection'> <option value=""></option> <?php if(isset($_POST["id_secteur"])){ include("../connx_bdd.php"); $rep=$bdd->query('SET NAMES `utf8`'); $rep= $bdd->prepare('SELECT * FROM inspection WHERE secteur="'.$_POST["id_secteur"].'" '); $rep->execute(array()); while ($donnees=$rep->fetch()) { ?> <option value="<?php echo $donnees['id_inspec']; ?>"><?php echo $donnees['inspec']; ?></option> <?php } }?> </select>
Partager