Warnung: file_put_contents(/home/www/web1/html/php_dev/test.txt) [function.file-put-contents]: failed to open stream: Permission denied in /home/www/web1/html/php_dev/sys/lib.activity.php (Zeile 58)
variable aus multiple-select-Anweisung auf nächste Seite übergeben? [Archiv] - PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr

- Ad -
php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
variable aus multiple-select-Anweisung auf nächste Seite übergeben?


 
Ralf
01-02-2002, 14:00 
 
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).

 
Ralf
01-02-2002, 15:05 
 
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.

 
Ralf
01-02-2002, 15:43 
 
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]

 
Ralf
01-02-2002, 16:59 
 
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

 
Ralf
01-02-2002, 17:39 
 
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.

- -

Alle Zeitangaben in WEZ +2. Es ist jetzt 19:36 Uhr.