Exemple pour :
SELECT1
item1
Item2
Item3
SELECT2 (alimenté par les sélections du SELECT1 )
item4
Item5
Voici le code généré suite à l'affichage du 2nd select :
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 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147
| <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8"/>
<title>INSERT INTO</title>
<!--SELECT MULTIPLE-->
<SCRIPT language="javascript" title="G1SCRIPT">
//Script Généré sur le Site <a href="http://www.G1SCRIPT.COM" target="_blank">http://www.G1SCRIPT.COM</a>
// Original: Sean Geraty (sean_geraty@hotmail.com)
// Control flags for list selection and sort sequence
// Sequence is on option value (first 2 chars - can be stripped off in form processing)
// It is assumed that the select list is in sort sequence initially
var singleSelect = true; // Allows an item to be selected once only
var sortSelect = true; // Only effective if above flag set to true
var sortPick = true; // Will order the picklist in sort sequence
// Initialise - invoked on load
function initIt() {
var selectList = document.getElementById("SelectList");
var pickList = document.getElementById("PickList");
var pickOptions = pickList.options;
pickOptions[0] = null; // Remove initial entry from picklist (was only used to set default width)
selectList.focus(); // Set focus on the selectlist
}
// Adds a selected item into the picklist
function addIt() {
var selectList = document.getElementById("SelectList");
var selectIndex = selectList.selectedIndex;
var selectOptions = selectList.options;
var pickList = document.getElementById("PickList");
var pickOptions = pickList.options;
var pickOLength = pickOptions.length;
// An item must be selected
if (selectIndex > -1) {
pickOptions[pickOLength] = new Option(selectList[selectIndex].text);
pickOptions[pickOLength].value = selectList[selectIndex].value;
// If single selection, remove the item from the select list
if (singleSelect) {
selectOptions[selectIndex] = null;
}
if (sortPick) {
var tempText;
var tempValue;
// Sort the pick list
while (pickOLength > 0 && pickOptions[pickOLength].value < pickOptions[pickOLength-1].value) {
tempText = pickOptions[pickOLength-1].text;
tempValue = pickOptions[pickOLength-1].value;
pickOptions[pickOLength-1].text = pickOptions[pickOLength].text;
pickOptions[pickOLength-1].value = pickOptions[pickOLength].value;
pickOptions[pickOLength].text = tempText;
pickOptions[pickOLength].value = tempValue;
pickOLength = pickOLength - 1;
}
}
}
}
// Deletes an item from the picklist
function delIt() {
var selectList = document.getElementById("SelectList");
var selectOptions = selectList.options;
var selectOLength = selectOptions.length;
var pickList = document.getElementById("PickList");
var pickIndex = pickList.selectedIndex;
var pickOptions = pickList.options;
if (pickIndex > -1) {
// If single selection, replace the item in the select list
if (singleSelect) {
selectOptions[selectOLength] = new Option(pickList[pickIndex].text);
selectOptions[selectOLength].value = pickList[pickIndex].value;
}
pickOptions[pickIndex] = null;
if (singleSelect && sortSelect) {
var tempText;
var tempValue;
// Re-sort the select list
while (selectOLength > 0 && selectOptions[selectOLength].value < selectOptions[selectOLength-1].value) {
tempText = selectOptions[selectOLength-1].text;
tempValue = selectOptions[selectOLength-1].value;
selectOptions[selectOLength-1].text = selectOptions[selectOLength].text;
selectOptions[selectOLength-1].value = selectOptions[selectOLength].value;
selectOptions[selectOLength].text = tempText;
selectOptions[selectOLength].value = tempValue;
selectOLength = selectOLength - 1;
}
}
}
}
//Identifiant du script: V7-246/Form
//Mis en ligne: 08/10/03
//By TANGUY
</SCRIPT>
<!--SELECT MULTIPLE-->
</head>
<body>
<form method ="post" action ="essaiINSERT2.php">
<TABLE>
<TR>
<TD>
<SELECT NAME="SelectList" ID="SelectList" SIZE="5"><!--1ere liste déroulante qui liste dynamiquement tous les genres-->
<option value="32">Item1</option><option value="20">Item2</option><option value="13">Item3</option>
</select>
</TD>
<TD>
<INPUT TYPE="BUTTON" VALUE="->" ONCLICK="addIt();"></INPUT>
<BR>
<INPUT TYPE="BUTTON" VALUE="<-" ONCLICK="delIt();"></INPUT>
</TD>
<TD>
<SELECT NAME="PickList[]" ID="PickList" SIZE="5">
<!--pas <option value> généré...-->
</SELECT>
<input type="submit" class="checkbox_float" name="btSubmit2"/>
</TD>
</TR>
</TABLE>
</form>
NULL
}
</body>
</html> |
Ce code est généré si l'Item4 ou l'Item5 n'est pas sélectionné (en surbrillance), ce qui est le comportement par défaut des Items rapatriés dans le SELECT2. Si je mets en surbrillance un des Items du SELECT2 (par ex l'Item1), le code généré est le même mais cette fois-ci le var_dump donne le résultat suivant :
array(1) { [0]=> string(2) "32" }
Du coup la requête d'insertion s'effectue mais se limite à l'insertion d'une seule value, celle que j'ai précédemment sélectionnée.
Or ce que je souhaiterais obtenir : après soumission, récupérer les valeurs des Items4 et 5 du SELECT2 par le simple fait de les avoir rapatriés précédemment dans le SELECT2. Voyez-vous comment y parvenir ? Merci encore de votre intérêt pour mon post.
EDIT : en inspectant avec firebug l'Item1 du SELECT2, je vois :
1 2 3
| <select size="5" id="PickList" name="PickList[]">
<option value="32">Item1</option></select> |
Le code source de la page ne fait pas apparaitre cette option value...
Partager