Bonjour à tous,
voilà je vous expose mon problème:
j'ai une page php sur laquelle j'ai 2 listes déroulantes liées à une base de données.
Et lorsque je sélectionne dans ma 1ère, je voudrais que ma seconde se rafraichisse (ie modifier la requête qui rempli cette liste déroulante).
J'ai donc mis un évènement onchange sur ma 1ère liste qui lance une fonction javascript afin de me renvoyer sa valeur (selected) pour que je puis modifier la requête sur la seconde liste.
en parcourant les forum, j'ai vu qu'on pouvait utiliser xmlhttprequest et sa propriété send pour récupérer une valeur en php, mais malheureusement, c là que je bloque, je ne reçoit rien.
voici ma fonction javascript:
et dans mon php, je fais (j'ai sorti de mon form le test pour recevoir la valeur javascript au cas où):
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 function test(param){ var xhr_object = null; var data = null; //initialisation de l'objet XMLHttpRequest if(window.XMLHttpRequest) // Firefox xhr_object = new XMLHttpRequest(); else if(window.ActiveXObject) // Internet Explorer xhr_object = new ActiveXObject("Microsoft.XMLHTTP"); else { // XMLHttpRequest non supporté par le navigateur alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest..."); return; } xhr_object.open("POST", "index.php?c=maintenances&ac=ajouter", true); //pour la methode POST xhr_object.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); data = "vincent"; xhr_object.send(data); }
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
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35 <form class="form_detail" method="post" action="index.php?c='.$this->className.'&ac=ajouter"> <fieldset> <legend>Informations</legend> <dl> <dt><label for="intitule">Intitulé</label><sup>*</sup> :</dt> <dd><input type="text" class="txtLbl oblig" name="maintenances[lbl]" id="lbl" value="'.$maintenances['lbl'].'" /></dd> <dt><label for="t_eqpts_id">Type d´équipement</label> :</dt> <dd><select name="maintenances[t_eqpts_id]" onchange="test(this.value);">'; $listeT_Eqpts = $this->tableT_Eqpts->listeTout("lbl", null,0); echo '<option value=null>< non renseigné ></option>'; foreach ($listeT_Eqpts as $t_eqpts){ echo '<option '; if($maintenances['t_eqpts_id'] == $t_eqpts['id']){echo 'selected ';}; echo ' value="'.$t_eqpts['id'].'">'.$t_eqpts['lbl'].'</option>'; } echo '</select></dd>'; echo '<dt><label for="etats_id">Etat</label><sup>*</sup> :</dt> <dd><select name="maintenances[etats_id]" class="oblig">'; $listeEtats = $this->tableEtats->listeTout("lbl", null,0); foreach ($listeEtats as $etats){ echo '<option '; if($maintenances['etats_id'] == $etats['id']){echo 'selected ';}; echo ' value="'.$etats['id'].'">'.$etats['lbl'].'</option>'; } echo '</select></dd> </dl> </fieldset> <input type="hidden" name="maintenances[desactive]" value="0"/> <button type="submit" name="ajouter"><img src="images/fichier_ajouter.png" alt=""/>Ajouter</button> </form> if(isset($_POST['cmd'])){ echo $_POST['cmd']; } else echo 'erreur';
je me demande si mon code est correct car ça m'écrit toujours "erreur" au lieu de mon $_POST?
(j'ai un petit doute sur le fait que je sois déjà sur la page que j'utilise dans mon xhr_object.open ne fausse pas mon code ??)
voilà, si quelqu'un à un avis à m'apporter, je suis preneur
(désolé s'il y a trop de blabla, mais une fois parti ...)
Partager