Bonjour,

J'essaye de faire passer des valeurs d'une select box à une autre, puis enregistrer les valeurs de la seconde :

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
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head>
<title>Test</title>
		<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
		<meta name="robots" content="index, nofollow">
		<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
		<script src="./createUser.js" type="text/javascript"></script>
		<script type="text/javascript">
		<!-- Cacher les fonctions pour les vieux navigateurs
			window.onload = function() {
				document.getElementById("sourceToTarget").onclick = function() {
					sureTransfer(document.getElementById("ProjectsListSource"), document.getElementById("ProjectsListTarget"), false);
 
				};
				document.getElementById("targetToSource").onclick = function() {
					sureTransfer(document.getElementById("ProjectsListTarget"), document.getElementById("ProjectsListSource"), false);
 
				};
			}
		--> Fin du cachage du script pour les vieux navigateurs
		</script>
	</head><body>
 
	<form action="./register.php" method="post" name="createuser">
 
		<div id="ProjectsChoice">
			<p>&nbsp;</p>
			<p>Cliquez sur chaque projet voulu en maintenant la touche [Ctrl] pour en sélectionner plusieurs.</p>
			<p>&nbsp;</p>
 
			<table>
				<thead>
					<tr>
						<td>Projets disponibles :</td>
						<td>&nbsp;</td>
						<td>Projets sélectionnés :</td>
					</tr>
				</thead>
					<tbody><tr>
						<td>
							<select id="ProjectsListSource" name="ProjectsListSource[]" size="8" multiple="multiple" title="Projets disponibles" class="projects_choice">
							<option value="53">Project 53</option><option value="54">Project 54</option><option value="55">Project 55</option><option value="56">Project 56</option><option value="59">Project 59</option><option value="58">Project 58</option><option value="60">Project 60</option>							</select>
						</td>
						<td>
							&nbsp;<input id="sourceToTarget" name="sourceToTarget" value="&gt;&gt;" type="button">&nbsp;
							<br>
							&nbsp;<input id="targetToSource" name="targetToSource" value="&lt;&lt;" type="button">&nbsp;
							<br>
						</td>
						<td>
							<select id="ProjectsListTarget" name="ProjectsListTarget[]" size="8" multiple="multiple" title="Projets sélectionnés" class="projects_choice">
							</select>
						</td>
					</tr>
			</tbody></table>
		</div>
 
		<div id="validForm">
			<p class="oreonbutton">
				<input name="submitA" value="Sauvegarder" onclick="javascript:selectAll();" type="submit">
			</p>
 
		</div>
	</form>
 
</body></html>
Le script js :
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
 
		function verifEmptyCases(){
			if(document.getElementById('postNomPrenom').value == ""){
				alert ('Vous devez renseigner le champ "Nom complet".');
				return false;
			}
			if(document.getElementById('postLogin').value == ""){
				alert ('Vous devez renseigner le champ "Login".');
				return false;
			}
			if(document.getElementById('postEmail').value == ""){
				alert ('Vous devez renseigner le champ "E-mail".');
				return false;
			} else {
				var verif = /^[\w-\.]+@([\w-]+\.)+[\w-]{2,4}$/;
				if (verif.exec(document.getElementById('postEmail').value) == null) {
					alert("Le format de l'email est incorrect.");
					return false;
				}
			}
			return true;
		}
 
 
		function sureTransfer(from, to, all) {
			if ( from.getElementsByTagName && to.appendChild ) {
 
				while ( getCount(from, !all) > 0 ) {
					transfer(from, to, all);
				}
				sortlist('ProjectsListSource');
				sortlist('ProjectsListTarget');
			}
		}
 
 
		function getCount(target, isSelected) {
			var options = target.getElementsByTagName("option");
			if ( !isSelected ) {
				return options.length;
			}
			var count = 0;
			for ( i = 0; i < options.length; i++ ) {
				if ( isSelected && options[i].selected ) {
					count++;
				}
			}
			return count;
		}
 
 
		function transfer(from, to, all) {
			if ( from.getElementsByTagName && to.appendChild ) {
				var options = from.getElementsByTagName("option");
				for ( i = 0; i < options.length; i++ ) {
					if ( all ) {
						to.appendChild(options[i]);
					} else {
						if ( options[i].selected ) {
							to.appendChild(options[i]);
						}
					}
				}
			}
		}
 
 
		function sortlist(varId) {
			var lb = document.getElementById(varId);
			arrTexts = new Array();
 
			for(i=0; i<lb.length; i++)  {
				arrTexts[i] = lb.options[i].text;
			}
 
			arrTexts.sort();
 
			for(i=0; i<lb.length; i++)  {
				lb.options[i].text = arrTexts[i];
				lb.options[i].value = arrTexts[i];
			}
		}
 
 
		function selectAll() {
			var nb = document.getElementById('ProjectsListTarget').options.length; // nombre de projets sélectionnés (colonne de droite)
			for( i = 0; i < nb; i++ ) {
				document.getElementById('ProjectsListTarget').options[i].selected = true;
			}
		}
(code trouvé ici, la FAQ de Developpez.com ne fonctionne pas chez moi)

register.php :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
 
<?php
        $TabProjectsSelected = $_POST['ProjectsListTarget'];
        print_r($TabProjectsSelected);
?>
Le transfert d'une boite à l'autre fonctionne. Seulement quand je valide le formulaire, je récupère les libellés des options (Projet 60 etc) mais je n'arrive pas à récupérer les values (60).

Savez-vous comment il faut faire pour que les id soient passés ? Merci d'avance !

Edit : je viens de regarder le code source de la page après le transfert de box, j'ai ceci :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
 
<select id="ProjectsListTarget" name="ProjectsListTarget[]" size="8" multiple="multiple" title="Projets sélectionnés" class="projects_choice">
	<option value="Project 59">Project 59</option><option value="58">Project 58</option>
	<option value="Project 60">Project 60</option>	
</select>
Les value sont modifiées et ont pris les valeurs des libellés Je ne comprend pas pourquoi...