Bonjour,
J'essaye de faire passer des valeurs d'une select box à une autre, puis enregistrer les valeurs de la seconde :
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 <!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> </p> <p>Cliquez sur chaque projet voulu en maintenant la touche [Ctrl] pour en sélectionner plusieurs.</p> <p> </p> <table> <thead> <tr> <td>Projets disponibles :</td> <td> </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> <input id="sourceToTarget" name="sourceToTarget" value=">>" type="button"> <br> <input id="targetToSource" name="targetToSource" value="<<" type="button"> <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>
(code trouvé ici, la FAQ de Developpez.com ne fonctionne pas chez moi)
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; } }
register.php :
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).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 <?php $TabProjectsSelected = $_POST['ProjectsListTarget']; print_r($TabProjectsSelected); ?>
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 :
Les value sont modifiées et ont pris les valeurs des libellés
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>Je ne comprend pas pourquoi...
Partager