Mehrdimensionale Arrays in Formularen
Ralf
- php
Hallo,
ich habe eine seite, in der ein Formular mehrmals angezeigt werden kann. d.h. auf der seite stehen 3 buttons, welche auf der seite alle das gleiche formular aufrufen, wobei die daten ansich für jede option anderst gespeichert werden. im formular stehen nur checkboxen. ich habe nun folgenden code (option gibt den wert des aktuell gedrückten buttons, also wurde button 1 gedrück ist $option=0, usw.)
Hiermit werden im formular alle häckchen gesetzt, oder wenn bereits einmal ein wert gesetzt wurde entsprechend der auswahl (was nicht funktioniert):
if (!isset($sess_feld[$option])) {
for ($i=0;$i<4;$i++) {
$checkfeld[$i]="checked";
$sess_feld[$option][$i]="1";
}
} else {
for ($i=0; $i<4; $i++) {
if ($sess_feld[$option][$i]<>'') {
$checkfeld[$i]="checked";
} else {
$checkfeld[$i]="";
}
}
}
So sehen die Checkboxen innerhalb des Formulars aus:
<input type='checkbox' name='feld[$option][0]' value='".$sess_feld[$option][0]."' ".$checkfeld[0].">
<input type='checkbox' name='feld[$option][1]' value='".$sess_feld[$option][0]."' ".$checkfeld[0].">
<input type='checkbox' name='feld[$option][2]' value='".$sess_feld[$option][0]."' ".$checkfeld[0].">
Und so versuche ich sie in der session zu speichern:
for ($i=0; $i<4; $i++) {
$sess_feld[$option][$i]=$feld[$option][$i];
}
session_register("sess_feld");
Leider funktioniert das nicht so ganz, es werden immer nur alle häckchen gesetzt. es scheint also so als ob $sess_feld[$option] immer auf nicht gesetzt steht.
wenn ich es mir eindimensionalen arrays mache gehts.
gruss und danke
ralf
So sehen die Checkboxen innerhalb des Formulars aus:
<input type='checkbox' name='feld[$option][0]' value='".$sess_feld[$option][0]."' ".$checkfeld[0].">
Hi,
du erwartest jetzt von dem armen php das es weiß in welcher form name="" gesetzt werden soll ?
Orginal: name='feld[$option][0]'
Da fehlt erstmal ein ]
ist die variable $option[0] ? oder ist es nur $option ? und [0] ist der arrayindex welcher dann auf eins gesetzt wird ($option[0][0] = 1)?
name='feld[".$option[0]."]'
name='feld[".$option."][0]'
lg
Ludwig
So sehen die Checkboxen innerhalb des Formulars aus:
<input type='checkbox' name='feld[$option][0]' value='".$sess_feld[$option][0]."' ".$checkfeld[0].">
Hi,
du erwartest jetzt von dem armen php das es weiß in welcher form name="" gesetzt werden soll ?
Orginal: name='feld[$option][0]'
Da fehlt erstmal ein ]
Wieso fehlt da ein ]?
ist die variable $option[0] ? oder ist es nur $option ? und [0] ist der arrayindex welcher dann auf eins gesetzt wird ($option[0][0] = 1)?
Wie oben erklärt ist option der index des gedrückten buttons. also wenn button 1 gedrückt wurde ist option=0, und damit ist der name der 1.checkbox feld[0][0], der 2. checkbox feld[0][1] usw.
name='feld[".$option[0]."]'
name='feld[".$option."][0]'
lg
Ludwig
Huhu Ralf
man kann keine mehrdimensionalen Arrays in Formularen verwenden.
Eine Lösung ist aber z.B. eine Dimension in den Namen des Feldes zu kodieren.
Also z.B.
<input type='checkbox' name='feld_$option[0]' value='".$sess_feld[$option][0]."' ".$checkfeld[0].">
Bei der Auswertung musst Du dann die Namen entsprechend zusammensetzen.
Also z.B.
$varname='feld_'.$option;
$my_arr=$$varname;
Viele Grüße
lulu
Huhu Ralf
man kann keine mehrdimensionalen Arrays in Formularen verwenden.
Wer hat dir den blödsinn verkauft ?
Ludwig
Huhu Ludwig
Wer hat dir den blödsinn verkauft ?
verdammt, dachte ich mir doch gleich das ich dem Typen nicht trauen kann. Aber ich dachte bei mir nur weil der Kerl eine Hakennase und buschige Augenbrauen hat sollte ich ihn nicht gleich vorverurteilen, und was er angeboten hatte klang wirklich verlockend "Alles was Sie schon immer über Formulare wissen wollten lernen Sie hier in 3 Tagen und 17 Minuten". Es war zwar nicht besonders billig aber der Einband war so schön bunt.
Jetzt schreibe ich 100 mal
"mehrdimensionale Arrays in Formularen sind überhaupt kein Problem"
"mehrdimensionale Arrays in Formularen sind überhaupt kein Problem"
"mehrdimensionale Arrays in Formularen sind überhaupt kein Problem"
"mehrdimensionale Arrays in Formularen sind überhaupt kein Problem"
etc.
Viele Grüße
lulu (dubito ergo sum)
Hi,
Huhu Ralf
man kann keine mehrdimensionalen Arrays in Formularen verwenden.
wenn es um php 3 geht hast du recht, aber ab php 4 gehts :-)
gruss
Huhu Ralf
es funktioniert tatsächlich, ich bin beeindruckt ;-)
So ist das mit dem gesunden Halbwissen, wenigstens muss ich jetzt dank Deiner Hilfe nicht ganz dumm sterben ;-)
Viele Grüße
lulu (* jetzt sofort ein MonsterForm bauend um in die 5. Dimension vorzustossen*)
freut mich für dich, nur meins klappt immer noch nicht *g*
grüsslis
ps. viel spass in der 5. dimension
Huhu Ralf
es funktioniert tatsächlich, ich bin beeindruckt ;-)
So ist das mit dem gesunden Halbwissen, wenigstens muss ich jetzt dank Deiner Hilfe nicht ganz dumm sterben ;-)
Viele Grüße
lulu (* jetzt sofort ein MonsterForm bauend um in die 5. Dimension vorzustossen*)
Huhu Ralf
so hier mein 2ter Versuch:
So sehen die Checkboxen innerhalb des Formulars aus:
<input type='checkbox' name='feld[$option][0]' value='".$sess_feld[$option][0]."' ".$checkfeld[0].">
<input type='checkbox' name='feld[$option][1]' value='".$sess_feld[$option][0]."' ".$checkfeld[0].">
<input type='checkbox' name='feld[$option][2]' value='".$sess_feld[$option][0]."' ".$checkfeld[0].">
liegt es evtl. daran, daß $checkfeld immer eine Null als Index hat, müßte glaube ich entsprechend der 2ten Dimension von feld sein.
Viele Grüße
lulu
Wahrscheinlich nicht, weil wenn button 2 gedrückt wurde ist die variable $option ja 1.
ich denke das problem liegt hier:
if (!isset($sess_feld[$option])) {
for ($i=0;$i<23;$i++) {
$checkfeld[$i]="checked";
$sess_feld[$option][$i]="1";
}
} else {
for ($i=0; $i<23; $i++) {
if ($sess_feld[$option][$i]<>'') {
$checkfeld[$i]="checked";
} else {
$checkfeld[$i]="";
}
}
}
oder hier:
for ($i=0; $i<23; $i++) {
$sess_feld[$option][$i]=$feld[$option][$i];
}
Huhu Ralf
so hier mein 2ter Versuch:
So sehen die Checkboxen innerhalb des Formulars aus:
<input type='checkbox' name='feld[$option][0]' value='".$sess_feld[$option][0]."' ".$checkfeld[0].">
<input type='checkbox' name='feld[$option][1]' value='".$sess_feld[$option][0]."' ".$checkfeld[0].">
<input type='checkbox' name='feld[$option][2]' value='".$sess_feld[$option][0]."' ".$checkfeld[0].">
liegt es evtl. daran, daß $checkfeld immer eine Null als Index hat, müßte glaube ich entsprechend der 2ten Dimension von feld sein.
Viele Grüße
lulu
hab dich falsch verstanden und ist ein schreibfehler von mir:
$checkfeld ist natürlich durchnumeriert.
sorry
Huhu Ralf
so hier mein 2ter Versuch:
So sehen die Checkboxen innerhalb des Formulars aus:
<input type='checkbox' name='feld[$option][0]' value='".$sess_feld[$option][0]."' ".$checkfeld[0].">
<input type='checkbox' name='feld[$option][1]' value='".$sess_feld[$option][0]."' ".$checkfeld[0].">
<input type='checkbox' name='feld[$option][2]' value='".$sess_feld[$option][0]."' ".$checkfeld[0].">
liegt es evtl. daran, daß $checkfeld immer eine Null als Index hat, müßte glaube ich entsprechend der 2ten Dimension von feld sein.
Viele Grüße
lulu