Aller au contenu

liste déroulante liée


didinette

Sujets conseillés

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

Lien vers le commentaire
Partager sur d’autres sites

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...

Lien vers le commentaire
Partager sur d’autres sites

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

Lien vers le commentaire
Partager sur d’autres sites

Il faudrait aussi le code javascript, car jusque la c'est lorsque tu fais appel au javascript que ca ne fonctionne pas :)

Lien vers le commentaire
Partager sur d’autres sites

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

Lien vers le commentaire
Partager sur d’autres sites

  • 1 year later...

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

Lien vers le commentaire
Partager sur d’autres sites

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 ?

Lien vers le commentaire
Partager sur d’autres sites

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

Lien vers le commentaire
Partager sur d’autres sites

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...