Bonjour,
je me suis mis il n'y a pas longtemps � l'ajax dans mes codes php. J'ai d'ailleur suivit un tuto du site. Seulement j'ai un probl�me. Mon code affiche trois select de suite, le premier actualise le second qui lui m�me actualise le 3�me (j'esp�re que c'est claire). A la premi�re selction tout va bien, mais d�s que je change d'option dans un select qui a d�j� actualis� le suivant, je me retrouve avec un select dans un select, et ainsi de suite � chaque actualisation !! Ce qui rend le code pas tr�s fonctionnel. Je voudrai donc savoir si je dois ajouter une condition pour eviter ce probl�me, sachant que je connait pas trop le JS.
Voici mes sources:
ajax.js:
index.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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68 var xhr = null; function getXhr(){ if(window.XMLHttpRequest) // Firefox et autres xhr = new XMLHttpRequest(); else if(window.ActiveXObject){ // Internet Explorer try { xhr = new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) { xhr = new ActiveXObject("Microsoft.XMLHTTP"); } } else { // XMLHttpRequest non supporté par le navigateur alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest..."); xhr = false; } } /** * Ajax qui définit les surfaces et les prix */ function prix_surface(){ 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('prix').innerHTML = leselect; } } // Ici on va voir comment faire du post xhr.open("POST","include/game/ajax_prix.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 de l'auteur sel = document.getElementById('secteur'); idsecteur = sel.options[sel.selectedIndex].value; xhr.send("idSecteur="+idsecteur); } /** * Ajax qui définit le personnel possible */ function personnel(){ 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('nb_personnes').innerHTML = leselect; } } // Ici on va voir comment faire du post xhr.open("POST","include/game/ajax_personnel.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 de l'auteur sel = document.getElementById('prix'); idprix = sel.options[sel.selectedIndex].value; xhr.send("idPrix="+idprix); }
ajax_prix.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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59 <?php if(isset($_SESSION['id'])){ include 'config.php'; echo'<script type="text/javascript">'; include 'include/ajax.js'; echo '</script>'; //Ici on fait les opérations de premières visite | etape 1 if(($_SESSION['initialise'] == '0') && (!isset($_POST['ok']))){ echo ' <table border=0 align="justify"> <tr><td> <form action="index.php?cat=game&act=index" name="choix_init" method="POST"> <INPUT TYPE="radio" CHECKED NAME="choix" VALUE="1"> Je veux creer mon entreprise<br> <INPUT TYPE="radio" NAME="choix" VALUE="2"> Je veux devenir salarier<br> <INPUT TYPE="radio" NAME="choix" VALUE="3"> Je veux travailler pour la mairie<br><br> <input type="submit" name="ok" value="Rejoindre la ville"> </form> </td></tr> </table>'; } //Ici on fait les opérations de premières visite | etape 2 if(($_SESSION['initialise'] == '0') && ($_POST['ok'] == 'Rejoindre la ville')){ if($_POST['choix'] == 1){ echo "<form name='entreprise'> <select name='secteur' id='secteur' onchange='prix_surface()'> <option value='-1'>Aucun</option>"; //Secteur d'activité |||||||||||||||||||||||||||||||| for($i=0;$i<sizeof($activites);$i++) { echo "<option value='".$activites[$i]."'>".$activites[$i]."</option>"; echo "\n"; } echo "</select>\n\n"; //Surface ||||||||||||||||||||||||||||| echo "<div id='prix' style='display:inline'> <select name='prix' id='prix' onchange='personnel()'>"; echo "<option value='-1'>Choisir une surface</option>"; echo "</select>\n\n</div>"; echo "<div id='nb_personnes' style='display:inline'> <select name='nb_personnes' id='nb_personnes'>"; echo "<option value='-1'>Choisir le nombre d'employés</option>"; echo "</select>\n\n</div>"; echo "</form>"; } } } } ?>
ajax_personnel.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 <?php include '../../config.php'; echo "<select name='prix' id='prix' onchange='personnel()'>"; if(isset($_POST["idSecteur"])){ for($i=0;$i<sizeof($surface_dispo);$i++) { $prix = $surface_dispo[$i] * constant('PRIX_'.$_POST['idSecteur']); echo '<option value="'.$surface_dispo[$i].'">'.$surface_dispo[$i].' m² --> Prix: '.$prix.' pk </option>'; echo "\n"; } } echo "</select>\n\n"; ?>
Voila merci.
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 <?php include '../../config.php'; echo "<select name='nb_personnes' id='nb_personnes'>"; if(isset($_POST["idPrix"])){ for($i=1;$i<=($_POST["idPrix"]*0.8);$i++) { echo '<option value="'.$i.'">'.$i.' employé(s)</option>'; echo "\n"; } } echo "</select>\n\n".$_POST["idPrix"]; ?>
Partager