Garder la valeur de deux select(liste déroulante) liée apres envoi du formulaire

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Garder la valeur de deux select(liste déroulante) liée apres envoi du formulaire

Re: Garder la valeur de deux select(liste déroulante) liée apres

par Blacksyd » 13 janv. 2010, 16:33

Il te faut une fonction qui rentourne selected en fonction de la valeur des selects que tu passes par le formulaire.

Après t'a juste à mettre cette fonction dans le onLoad et vala ;)

Re: Garder la valeur de deux select(liste déroulante) liée apres

par hi-logik » 13 oct. 2009, 14:36

salut !

Je recherche la meme chose as tu trouver une solution ?

Garder la valeur de deux select(liste déroulante) liée apres

par kitten13 » 01 juin 2009, 15:29

Bonjour,

J'ai 3 listes déroulantes liées en ajax (Région -> Départ -> Commune) créer suivant cette méthode :
http://siddh.developpez.com/articles/ajax/#LIV-A

Je n'arrive pas garder la valeur choisie du 2 ème et 3 ème select après envoi du formulaire, pouvez vous m'aider.

Voici mon code simplifier pour aller droit au but :

Fichier qui contient le formulaire (post.php)

Code : Tout sélectionner

<script type='text/javascript'> function getXhr(){ var xhr = null; 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 { alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest..."); xhr = false; } return xhr; } function depart(){ var xhr = getXhr(); xhr.onreadystatechange = function(){ if(xhr.readyState == 4 && xhr.status == 200){ leselect = xhr.responseText; document.getElementById('divcity').innerHTML = leselect; } } xhr.open("POST","lieu/departement.php",true); xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded'); sel = document.getElementById('countryid'); countryid = sel.options[sel.selectedIndex].value; xhr.send("countryid="+countryid); } function ville(){ var xhr = getXhr(); xhr.onreadystatechange = function(){ if(xhr.readyState == 4 && xhr.status == 200){ leselect = xhr.responseText; document.getElementById('divarea').innerHTML = leselect; } } xhr.open("POST","lieu/ville.php",true); xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded'); sel = document.getElementById('cityid'); cityid = sel.options[sel.selectedIndex].value; xhr.send("cityid="+cityid); } </script> <form action="post.php" method="post" name="frmPost" enctype="multipart/form-data"> <div class="labelform" style="clear: left;"> <label for="region">Région</label> </div> <div class="adinput"> <select name='countryid' id='countryid' onchange='depart()'> <option value=''> &laquo;Choisissez la région&raquo; </option> <? $res = mysql_query("SELECT countryid, countryname FROM $t_countries ct ORDER BY countryname"); while($row=mysql_fetch_array($res)) { echo "<option value=\"$row[countryid]\""; if ($row['countryid'] == $_REQUEST['countryid']) echo " selected"; echo "> $row[countryname]</option>"; } ?> </select> </div> <div class="labelform" style="clear: left;"> <label for="D&eacute;partement">Département</label> </div> <div id='divcity' style='display:inline'> <select name='cityid'> <option value="-1">&laquo;Choisissez le département&raquo;</option> </select> </div> <div class="labelform" style="clear: left;"> <label for="Commune">Commune</label> </div> <div id='divarea' style='display:inline'> <select name='area'> <option value="" selected="selected">&laquo;Choisissez la commune&raquo;</option> </select> <?php if($err_area) echo "<div style=\"display: block;\"><span class=\"error\">$err_area</span></div>"; ?> </div> </form>
php du deuxième select (departement.php)

Code : Tout sélectionner

<?php if(isset($_POST["countryid"])){ $sql = ("SELECT cityid, cityname FROM ".$t_cities." WHERE countryid = ".$_POST["countryid"]." ORDER BY cityname"); $res = mysql_query($sql); if (mysql_num_rows($res)) { ?> <select name='cityid' id='cityid' onchange='ville()'> <option value="-1" > &laquo;Choisissez le d&eacute;partement&raquo;</option> <?php $other_index = 1; while ($row = mysql_fetch_array($res)) { $other_index++; if($_REQUEST['cityid']==$row['cityid']) { $selectchoix=' selected="selected"'; } else { $selectchoix=''; } echo '<option value="'.$row['cityid'].'"'.$selectchoix.'>'.$row['cityname'].'</option>'; //echo '<option value="'.$row['cityid'].'" '.(($data['cityid']==$row['cityid'])?'selected="selected"':'').'>'.$row['cityname'].'</option>'; } ?> </select> <?php } } ?>
php du troisième select (ville.php)

Code : Tout sélectionner

<?php if(isset($_POST["cityid"])){ $sql = ("SELECT areaname FROM $t_areas WHERE cityid = ".$_POST["cityid"]." ORDER BY areaname"); $res = mysql_query($sql); if (mysql_num_rows($res)) { ?> <select name="area"> <option value="" selected="selected"> &laquo;Choisissez la commune&raquo; </option> <?php $other_index = 1; while ($row = mysql_fetch_array($res)) { $other_index++; echo '<option value="'.$row[areaname].'"'; if ($data['area'] == $row['areaname']) echo ' selected="selected"'; echo '>'.$row[areaname].'</option>'; } ?> </select> <?php } } ?>

Merci pour votre aide
:wink: