Archiv verlassen und diese Seite im Standarddesign anzeigen : variable aus multiple-select-Anweisung auf nächste Seite übergeben?
Hallo,
ich habe folgende select-multiple-Auswahlliste:
<td><select multiple size="5" name="landkreis_id">
<option value="21"> item 2.1 </option>
<option value="22"> item 2.2 </option>
<option value="23"> item 2.3 </option>
<option value="24"> item 2.4 </option>
<option value="25"> item 2.5 </option>
</select></td>
Frage: wie kann ich die Variable "landkreis_id" an die Seite "test-wunschregion.php3" weitergeben, der Form?
<a href=\"test-wunschregion.php3?landkreis_id=$landkreis_id\">landkreis_id weitergeben</a>
die Variable "landkreis_id" müßte doch ein array sein - oder? aber wenn ich name="landkreis_id [ ]" schreibe in der select-Anweisung dann funktionnierts auch nicht. Weiß jemand weiter?
Gruß Ralf
BrainBug 01-02-2002, 14:08 du solltest mal das Leerzeichen beim Array weglassen. Und falls auch nicht hilft, lass den Unterstrich weg (aber daran sollte es eigentlich nicht liegen).
hat leider nicht funktioniert, vielleicht hängt das ganze noch mit den Javafunktionen zusammen, die dahinter stecken. Das gesamte Skript besteht aus 2 multiple-select-Anweisungen, wobei man die Einträge von der einen Liste in die andere bringen kann und umgekehrt (mittels Java-Funktionen). list1 oder list2 müßten doch arrays sein-oder?, dessen Werte ich auf die Seite "test-wunschregion.php3" oder diesselbe Seite bringen möchte.
<form ACTION="" METHOD="POST">
<table border="0">
<tr>
<td><select multiple size="5" name="list1">
<option value="11"> item 1.1 </option>
<option value="12"> item 1.2 </option>
<option value="13"> item 1.3 </option>
<option value="14"> item 1.4 </option>
<option value="15"> item 1.5 </option>
</select></td>
<td>
<input type="button" value=" >> " onclick="move(this.form.list1,this.form.list2)" name="B1"><br>
<input type="button" value=" << " onclick="move(this.form.list2,this.form.list1)" name="B2">
</td>
<td><select multiple size="5" name="list2">
<option value="21"> item 2.1 </option>
<option value="22"> item 2.2 </option>
<option value="23"> item 2.3 </option>
<option value="24"> item 2.4 </option>
<option value="25"> item 2.5 </option>
</select></td>
</tr>
</table>
</form>
Hier die Java-Funktionen im Head-Bereich:
<SCRIPT LANGUAGE="JavaScript">
<!-- This script and many more are available free online at -->
<!-- The JavaScript Source!! http://javascript.internet.com -->
<!-- Begin
sortitems = 1; // Automatically sort items within lists? (1 or 0)
function move(fbox,tbox) {
for(var i=0; i<fbox.options.length; i++) {
if(fbox.options[i].selected && fbox.options[i].value != "") {
var no = new Option();
no.value = fbox.options[i].value;
no.text = fbox.options[i].text;
tbox.options[tbox.options.length] = no;
fbox.options[i].value = "";
fbox.options[i].text = "";
}
}
BumpUp(fbox);
if (sortitems) SortD(tbox);
}
function BumpUp(box) {
for(var i=0; i<box.options.length; i++) {
if(box.options[i].value == "") {
for(var j=i; j<box.options.length-1; j++) {
box.options[j].value = box.options[j+1].value;
box.options[j].text = box.options[j+1].text;
}
var ln = i;
break;
}
}
if(ln < box.options.length) {
box.options.length -= 1;
BumpUp(box);
}
}
function SortD(box) {
var temp_opts = new Array();
var temp = new Object();
for(var i=0; i<box.options.length; i++) {
temp_opts[i] = box.options[i];
}
for(var x=0; x<temp_opts.length-1; x++) {
for(var y=(x+1); y<temp_opts.length; y++) {
if(temp_opts[x].text > temp_opts[y].text) {
temp = temp_opts[x].text;
temp_opts[x].text = temp_opts[y].text;
temp_opts[y].text = temp;
temp = temp_opts[x].value;
temp_opts[x].value = temp_opts[y].value;
temp_opts[y].value = temp;
}
}
}
for(var i=0; i<box.options.length; i++) {
box.options[i].value = temp_opts[i].value;
box.options[i].text = temp_opts[i].text;
}
}
// End -->
</script>
BrainBug 01-02-2002, 15:11 also, eigentlich sollte es reichen, wenn du
<td><select multiple size="5" name="list1[]">
und
<td><select multiple size="5" name="list2[]">
benutzt. Woher weißt du denn, daß die Daten nicht ankommen? Vielleicht greifst du ja auch falsch im PHP darauf zu?
<? for($i=0;$i<count($list1);$i++) echo "Wert: ".$list1[$i]."<br>"; ?>
gibt dir mal die erste Box aus, wenn was ausgewählt wurde.
die Werte werden jetzt übergeben, die, die mit der string-Taste markiert wurden, aber jetzt hab ich das Problem, daß die Javaskripte nicht mehr funktionieren, d.h. die Einträge nicht mehr von der einen Liste in die andere bewegt werden können.
<form ACTION="test-wunschregion.php3" METHOD="POST">
....
<input type="button" value=" >> " onclick="move(this.form.list1,this.form.list2)" name="B1"><br>
<input type="button" value=" << " onclick="move(this.form.list2,this.form.list1)" name="B2">
</td>
<td><select multiple size="5" name="list2[]">
<option value="21"> item 2.1 </option>
<option value="22"> item 2.2 </option>
<option value="23"> item 2.3 </option>
<option value="24"> item 2.4 </option>
<option value="25"> item 2.5 </option>
</select></td>
</tr>
</table>
<TD COLSPAN="3" ALIGN="center"><INPUT TYPE="image" VALUE="submit" SRC="weiter.gif"></TD>
</form>
BrainBug 01-02-2002, 16:25 klar, jetzt heissen deine List auch nicht mehr move(this.form.list1,this.form.list2)
sondern move(this.form.list1[],this.form.list2[])
P.S.: Falls JavaScript die Klammern nicht direkt im Namen akzeptiert, kannst du mal versuchen, die Namen so zu übergeben:
move(this.form.elements[Nummer_des_Feldes1],this.form.elements[Nummer_des_Feldes2])"
[Editiert von BrainBug am 01-02-2002 um 16:28]
ja, und ich glaube da liegt das Problem, Java akzeptiert die Klammern nicht, sowohl
move(this.form.elements[0],this.form.elements[1])
als auch
move(this.form.list2[],this.form.list1[] funktionieren nicht
PS: ich habe nur 2 select-multiple Auswahllisten in der form-Anweisungen, und die Nummern beginnen mit 0
ich glaube ich mache eine einfache select-multiple-Auswahlliste, ohne Java, das funktioniert
BrainBug 01-02-2002, 17:04 Nein, du hast doch auch noch zwei Buttons zwischen oder sogar über den Selectboxen -> dann wären wir schon bei der Zählung .elements[2] und .elements[3] -> du mußt wirklich jedes Formelement mitzählen, auch irgendwelche hidden-Felder
P.S.: laut deinem oberen Code -> [0] und [3] -> 2 * Buttons dazwischen mit [1] und [2] als Element
BrainBug 01-02-2002, 17:11 ich verschieb mal das Thema ins Forum "HTML/JavaSCript", da es ja hier rein um JS geht
toll, jetzt funktioniert das ganze, danke
um jetzt das array, z.B. list[2] auf eine andere Seite weiterzugeben, muß man die Einträge markieren, z.B. mit der String-Taste, geht das auch ohne Markierung, denn ich habe ja schon eine Auswahl getroffen indem ich die Einträge von der linken Auswahlliste in die Rechte geklickt habe.
|
-
- |