Bonjour à vous,

J'ai recherché ici sur le FORUM mais je n'ai pas trouvé.
Le SUJET dit tout. Ce que j'ai trouvé sur le WEB fonctionne bien quand on part de rien dans la liste.
Quand je reviens pour modifier, ce que j'avais enregistré est sélectionner dans la liste, mais lorsque je clique sur un autre pour un ajout ce qui étaient sélectionnés disparait et je dois tout recommencer à zéro.

Le dernier script que j'ai est le suivant :

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
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
// Variables we need
var previous	= new Array();
var lastClicked = '';
 
// We are going to attach event listeners, no code at the bottom or anything hard coded...
function addEvent(obj, evType, fn)
{ 
	if(obj.addEventListener)
	{
		obj.addEventListener(evType, fn, false);
		return true;
	}
	else if(obj.attachEvent)
	{
		var r = obj.attachEvent('on' + evType, fn);
		return r;
	}
	else
	{
		return false; 
	} 
}
 
// Let's begin when the DOM is ready
addEvent(window, 'load', begin);
 
// Attach the handlers to our selects
// Attach the handlers to our selects
function begin()
{
	var selects = document.getElementsByTagName('select');
 
	for(var i = 0; i < selects.length; i++)
	{
		if(selects[i].multiple == true)
		{
			addEvent(selects[i], 'click', whichElement);
			addEvent(selects[i], 'click', addRemoveClicked);
		}
	}
}
// We add a couple of handlers to each
function addSelect(id)
{
	var sel = document.getElementById(id);
	addEvent(sel, 'click', whichElement);
	addEvent(sel, 'click', addRemoveClicked);
}
 
// Find which element we are looking at on this click
function whichElement(e)
{
	if(!e)
	{
		var e = window.event;
	}
	if(e.target)
	{
		lastClicked = e.target;
	}
	else if(e.srcElement)
	{
		lastClicked = e.srcElement;
	}
	if(lastClicked.nodeType == 3) // Safari bug
	{
		lastClicked = lastClicked.parentNode;
	}
}
 
// Make sure we are displaying the correct items
function addRemoveClicked(e)
{
	if(!previous[this.id])
	{
		previous[this.id] = new Array();
	}
	// Remember what has been used
	if(previous[this.id][lastClicked.value] == 1)
	{
		previous[this.id][lastClicked.value] = 0;
	}
	else
	{
		previous[this.id][lastClicked.value] = 1;
	}
	var selectBox = document.getElementById(this.id);
 
	// Add correct highlighting
	for(var i = 0; i < selectBox.options.length; i++)
	{
		selectBox.options[i].selected = '';
 
		if(previous[this.id][selectBox.options[i].value] == 1)
		{
			selectBox.options[i].selected = 'selected';
		}
	}
}
Mon Select Multiple est le suivant :

Code php : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
select name="invites[]" size="25" multiple="MULTIPLE" id="invites" style="width:250px;">
<?php 
do {
?>
        <option value="<?= $row_membre['no_membre']; ?>"<?php if (in_array($row_membre['no_membre'], $_SESSION['invites'])) echo "selected='selected'"; ?>><?= stripslashes($row_membre['prenom']) . ' ' . stripslashes($row_membre['nom']); ?></option>
<?php 	
} while ($row_membre = mysql_fetch_assoc($dem_membre)); 
?>
</select>

Ce petit bout de code me permet d'avoir en selection ce qui est enregistré.

Ceux et celles qui utiliseront cet interface ne sont pas des habitués, donc ca doit être le plus simple possible.

Merci
Sylvain