didinette Posté 23 Juin 2007 Posté 23 Juin 2007 Bonjour, voilà j'ai plusieurs listes déroulantes généralement elle sont liées ensemble. En effet, lorsque je sélectionne une année je dois pouvoir charger dans une autre liste déroulante les mois disponibles pour cette année puis au vu du mois sélectionnée les dates existantes. J'ai fait ceci pour l'année (saison) mais cela ne marche pas: <td> <font color="green"> <u> Inscription à un stage : </u> </font> <br><br> Saison * <?php // comment créér une liste déroulante et la générer $sql="Select Sta_Num, Sta_Saison from stage"; $resultat= mysql_query ($sql, $connect); echo '<select name="lst_stageSaison">'; while ($ligne = mysql_fetch_row($resultat)) { echo '<option selected="selected" value="'.$ligne[0].'">'.$ligne[1]; echo '</option>'."\n"; } echo '</select>'."\n"; ?> <?php if(isset($_POST['lst_stageSaison'])) { $saison= $_POST['lst_stageMois'] if ($mois == "septembre") { echo "<select selected=\"selected\" onchange=\"chgpage\">"; for {$i=0,$i<30;$i++} { echo "<option>".$i+1.\"</option>\"; } } } ?> Si qqn a eu idée cela m'arrangerais bien. Merci
iNCiTE Web Posté 24 Juin 2007 Posté 24 Juin 2007 mais cela ne marche pas: C'est-à-dire ? ça plante, ça n'affiche rien, il y a un message d'erreur etc etc echo '<option selected="selected" value="'.$ligne[0].'">'.$ligne[1]; Oulà : toutes les lignes de la combo vont être sélectionnées, alors ça sert à rien là echo "<select selected=\"selected\" onchange=\"chgpage\">"; Il n'y a pas de propriété SELECTED pour le select, seulement pour les options. D'autre part, on a pas la fonction Javascript "chgpage", c'est peut être ça qui ne fonctionne pas Il manque aussi le </select> à la fin... En gros, corrige ton code, et dis nous ce se passe et ce qu'il devrait y avoir, on pourra plus t'aider...
didinette Posté 24 Juin 2007 Auteur Posté 24 Juin 2007 Bonjour, j'ai enlevé des erreurs sur mon code. Ainsi, j'arrive à obtenir la liste des saisons mais lorsque je clique sur une saison et bien rien ne se passe dans la deuxième. En effet, normalement si je cliques sur une saison ex: 2006-2007 je dois avoir dans ma second liste tous les mois disponibles Voici, mon code <?php //Création des array php $sql = mysql_query("SELECT Distinct (Sta_Saison) FROM stage") or die(mysql_error()); while ($a = mysql_fetch_array($sql)) $Saison[] = $a; $sql = mysql_query("SELECT Sta_Mois FROM stage") or die(mysql_error()); while ($a = mysql_fetch_array($sql)) $Mois[] = $a; //Création array javascript depuis array php ?><script> function showMois(idMois) { z = 0; for(i = 0; i < Mois.length; i++) if(Mois["Sta_Mois"] == idMois) document.getElementById('Mois').options[z++] = new Option(Mois["Sta_Mois"], false, true) } <?php echo 'var Saison = new Array();'."\n"; echo 'var Mois = new Array();'."\n"; echo "\n"; for($i = 0; $i < count($Saison); $i++) { echo 'Saison['.$Saison[$i]['Sta_Saison'].'] = "'.$Saison[$i]['Sta_Saison'].'"'."\n"; } echo "\n"; for($i = 0; $i < count($Mois); $i++) { echo 'Mois['.$i.'] = new Array();'."\n"; echo 'Mois['.$i.']["Sta_Mois"] = '.$Mois[$i]['Sta_Mois'].';'."\n"; // echo 'Sta_Mois['.$i.']["Sta_Mois"] = "'.$Mois[$i]['Sta_Mois'].'";'."\n"; echo "\n"; } echo "\n"; echo '</script>'."\n"; $a = count($Saison) + 2; echo '<select name="lst_stageSaison[]" id="lst_stageSaison" size="'.$a.'" >'; echo '<optgroup label="Les saisons">'; for($i = 0; $i < count($Saison); $i++) { echo '<option name ="Sta_Saison_\'.$i.\'" onclick="showMois('; echo $Saison[$i]['Sta_Saison']; echo ');" value="'; echo $Saison[$i]['Sta_Saison']; echo '">'; echo $Saison[$i]['Sta_Saison']; echo '</option>'; echo "\n"; } echo '</select>'; echo '<select name="lst_stageMois[]" id="lst_stageMois" size="14" >'; echo '<optgroup label="Les mois">'; /*for($i = 0; $i < Mois; $i++) echo '<option name="Sta_Mois_\'.$i.\'" value="defaut">Sta_Mois_\'.$i.\'</option>';*/ echo '</select>'; ?> J'espère que cela est plus clair et que quelqu'un pourra m'aider Merci
Nanane Posté 25 Juin 2007 Posté 25 Juin 2007 Il faudrait aussi le code javascript, car jusque la c'est lorsque tu fais appel au javascript que ca ne fonctionne pas
didinette Posté 25 Juin 2007 Auteur Posté 25 Juin 2007 Bonjour, j'ai utilisé du javascript qu'ici <script> function showMois(idMois) { z = 0; for(i = 0; i < Mois.length; i++) if(Mois["Sta_Mois"] == idMois) document.getElementById('Mois').options[z++] = new Option(Mois["Sta_Mois"], false, true) } Par ailleurs, j'ai omis de dire que je consulte la même table. En effet, lorsque je choisis une saison pour un stage je dois pouvoir voir les mois qui sont disponibles pour cette saison. Et ces mois correspondent à un stage. Est-ce possible de faire cela? Merci de votre aide
amel01 Posté 18 Novembre 2008 Posté 18 Novembre 2008 bjr svp veuillez m'aider je vous explique en php une table contient les pays une table contient les ville de chaque pays et une table contrient les communes de chaque villes je veux quand je choisi dans la liste pays , ça me donne dans la 2eme liste les ville de ce pays, et quand je choisi une ville de cette 2eme liste ça me donne dans la 3eme liste les communes de cette ville. Biensure les pays, villes commune se trouvent dans une base de donnée SVP si vous pouvez m'envoyer le code j'ai un travail urgent merci
captain_torche Posté 18 Novembre 2008 Posté 18 Novembre 2008 Nous n'allons pas t'envoyer le code, comme tu dis; nous ne sommes pas ici pour travailler à ta place. Nous pouvons te donner des conseils, et te débloquer ponctuellement. Mais avant toute chose, il faut que tu t'y mettes par toi-même, et que tu voies où tu bloques. Pour commencer, quel est ton niveau ? As-tu déjà fait de l'AJAX ? Saurais-tu faire la même page sans JavaScript ?
amel01 Posté 18 Novembre 2008 Posté 18 Novembre 2008 bonjour et merci de m\'avoir repondre j\'ai fait ce code d\'aprés ce lien http://siddh.developpez.com/articles/ajax/#LIV-A de deux liste il ne marche pas: CREATE TABLE `auteur` ( `id` tinyint(4) NOT NULL auto_increment, `nom` varchar(50) NOT NULL, PRIMARY KEY (`id`));insert into `auteur` values (1,\'Clive Cussler\'),(2,\'Harlan Coben\'),(3,\'Franck Herbert\'),(4,\'Pierre Bordages\');CREATE TABLE `livre` ( `id` tinyint(4) NOT NULL auto_increment, `titre` varchar(50) NOT NULL, `idAuteur` tinyint(4) default NULL, PRIMARY KEY (`id`));insert into `livre` values (1,\'Odyssee\',1),(2,\'Sahara\',1),(3,\'Dragon\',1),(4,\'Une chance de trop\',2),(5,\'Ne le dis a personne\',2),(6,\'Disparu à jamais\',2),(7,\'Dune\',3),(8,\'La barriere de santaroga\',3),(9,\'Les guerriers du silence\',4),(10,\'La citadelle hyponeros\',4),(11,\'Terra mater\',4); le fichier auteur.php <html> <head> <title>Tutoriel Ajax (XHTML + JavaScript + XML)</title> <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 { // XMLHttpRequest non supporté par le navigateur alert(\"Votre navigateur ne supporte pas les objets XMLHTTPRequest...\"); xhr = false; } return xhr; } /** * Méthode qui sera appelée sur le click du bouton */ function go(){ 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(\'livre\').innerHTML = leselect; } } // Ici on va voir comment faire du post xhr.open(\"POST\",\"ajaxLivre.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(\'auteur\'); idauteur = sel.options[sel.selectedIndex].value; xhr.send(\"idAuteur=\"+idauteur); } </script> </head> <body> <form> <fieldset style=\"width: 500px\"> <legend>Liste liées</legend> <label>Auteurs</label> <select name=\'auteur\' id=\'auteur\' onchange=\'go()\'> <option value=\'-1\'>Aucun</option> <? mysql_connect(\"localhost\",\"root\",\"root\"); mysql_select_db(\"test\"); $res = mysql_query(\"SELECT * FROM auteur ORDER BY nom\"); while($row = mysql_fetch_assoc($res)){ echo \"<option value=\'\".$row[\"id\"].\"\'>\".$row[\"nom\"].\"</option>\"; } ?> </select> <label>Livres</label> <div id=\'livre\' style=\'display:inline\'> <select name=\'livre\'> <option value=\'-1\'>Choisir un auteur</option> </select> </div> </fieldset> </form> </body></html> le fichier Ajaxlivre <?php echo \"<select name=\'livre\'>\"; if(isset($_POST[\"idAuteur\"])){ mysql_connect(\"localhost\",\"root\",\"root\"); mysql_select_db(\"test\"); $res = mysql_query(\"SELECT id,titre FROM livre WHERE idAuteur=\".$_POST[\"idAuteur\"].\" ORDER BY titre\"); while($row = mysql_fetch_assoc($res)){ echo \"<option value=\'\".$row[\"id\"].\"\'>\".$row[\"titre\"].\"</option>\"; } } echo \"</select>\";?> ou est le probleme ici
captain_torche Posté 18 Novembre 2008 Posté 18 Novembre 2008 Il va falloir être plus explicite : qu'est-ce qui ne fonctionne pas ? - La table est-elle bien créée et remplie dans la base de données ? - As-tu un message d'erreur quelconque ?
amel01 Posté 18 Novembre 2008 Posté 18 Novembre 2008 le probleme que les listes sont vide à l'execution
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant