Bonjour,

j'ai trois listes déroulantes liées entre elles : Type prestation - Prestation - Fournisseur

Une fois que j'ai fait ma sélection dans les trois listes (ex : Mariage - Patissier - Mr Machin), je clique sur un "button" à côté, et "Mariage - Patissier - Mr Machin" va s'afficher dans une quatrième liste déroulante à choix multiple.

Si je veux ajouter une autre sélection à celle déjà affichée dans la liste, je vais donc modifier mes listes déroulantes, tout en gardant le contenu de ma quatrième liste. Et là il y a un problème. Si je modifie une des deux premières listes (type ou prestation), le contenu de ma liste à choix multiple s'efface.

Je suppose que ça doit venir du fait que ces deux listes ont un :
onchange = "this.form.submit()" que la troisième n'a pas.
Mais comme les listes sont liées entre elles, je suis bien obligée de le mettre.

Voici mon code pour ajouter dans la quatrième liste ma sélection :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
 
function add_liste()
{
	var listeChoix = document.getElementById("choix_prestations");
	var listeChoixFils = listeChoix.firstChild;
 
	var opt = document.createElement("option");
	var optValue = document.createAttribute("value");
	opt.value = document.formEvent.prestations.value + "-" + document.formEvent.fournisseurs.value;
		opt.appendChild(document.createTextNode(document.formEvent.prestations.value + "-" + document.formEvent.fournisseurs.value));
	document.getElementById("choix_prestations").appendChild(opt);
}
et voici le code d'une des listes (la première) :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
 
echo '<select name="types" onchange="this.form.submit();">';
echo '<option>Choisissez dans la liste</option>';
while ($donnees = mysql_fetch_array($req_type)) 
{  
	$selected = (isset($_POST['types']) && $_POST['types'] == $donnees['id_type'])? " selected":""; 
	echo '<option value="'.$donnees['id_type'].'"'. $selected.'>'.$donnees['libelle'].'</option>';
	$id_type = $_POST['types'];
}
echo '</select></td></tr>';
et enfin le code de la liste à choix multiple avec le bouton sur lequel on clique pour ajouter notre sélection :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
 
// Prestations sélectionnées
echo '<tr><td>Prestations sélectionnées</td>';
echo '<tr><td><select id="choix_prestations" multiple>';
echo '</select></td><td><input type="button" onclick="add_liste();"></input></td></tr>';
Comment puis-je faire pour garder ce que j'ai déjà sélectionné dans ma quatrième liste, tout en modifiant mes listes déroulantes pour faire d'autres sélections ?