html Checkboxen, $box_1, in einer Schleife ausgeben
Ich habe in einem HTMl Formular 60 Checkboxen, diese haben den Namen
box_1
box_2
box_3
Nun möchte ich auf der nächsten Seite die Boxen weiterverarbeiten bzw. den
Inhalt ausgeben. Doch hier habe ich irgendwie ein Problem.
Mache ich es einzeln
echo $box_1.'<br>';
echo $box_2.'<br>';
funktioniert es.
ABer ich möchte es gerne in einer Schleife machen, aber das geht nicht
for ( $x = 1; $x <= 11; $x++ )
{
echo $box_.$x .'<br>';
}
Für einen Tipp wäre ich sehr dankbar
Sabine
Re: html Checkboxen, $box_1, in einer Schleife ausgeben
Sabine Matuschek schrieb:
> Ich habe in einem HTMl Formular 60 Checkboxen, diese haben den Namen
>
> box_1
> box_2
> box_3
>
> Nun möchte ich auf der nächsten Seite die Boxen weiterverarbeiten bzw. den
> Inhalt ausgeben. Doch hier habe ich irgendwie ein Problem.
Warum gibst den Boxen nicht einfach den Namen box[], dann hast alle
angehakten Werte später im Array drinstehen:
foreach($_POST['box'] as $wert)
{
print $wert;
}
Hier der erste passende Link den ich gefunden habe (aber auf $_REQUEST
würde ich verzichten, siehe ein Absatz weiter unten):
http://www.php-faq.de/q/q-formular-checkbox.html
> Mache ich es einzeln
>
> echo $box_1.'<br>';
> echo $box_2.'<br>';
>
> funktioniert es.
Hast du register_globals angeschaltet? Wenn ja solltest darüber
nachdenken auf die Variante $_POST oder $_GET zu wechseln. Vor allem
wenn vor hast auf PHP 6 zu wechseln irgendwann...
> ABer ich möchte es gerne in einer Schleife machen, aber das geht nicht
>
> for ( $x = 1; $x <= 11; $x++ )
> {
>
> echo $box_.$x .'<br>';
> }
>
> Für einen Tipp wäre ich sehr dankbar
.. = Stringoperator, du verbindest den Inhalt der Variable $box mit dem
Inhalt der Variable $x. Wenn du error_reporting die Notice Meldungen
angeschaltet hast, solltest davon sehr viele bekommen.
Im übrigen sind diese Notice Meldungen zusammen mit angeschaltetem
register_globals (nur dann ist diese Einstellung gefährlich) ein
Paradebeispiel von Sicherheitslöchern.
--
Mit freundlichen Grüßen,
Christoph Herrmann
http://dragonprojects.de/
Re: html Checkboxen, $box_1, in einer Schleife ausgeben
Hallo,
Sabine Matuschek wrote:
> ABer ich möchte es gerne in einer Schleife machen, aber das geht nicht
>
> for ( $x = 1; $x <= 11; $x++ )
> {
>
> echo $box_.$x .'<br>';
> }
>
> Für einen Tipp wäre ich sehr dankbar
ich glaube das Stichwort ist "variable Variable".
Also mal ungetestet so:
for ( $x = 1; $x <= 11; $x++ )
{
$boxName= "box_".$x;
echo $$boxName .'<br>';
}
mfg. klaus.
Re: html Checkboxen, $box_1, in einer Schleife ausgeben
Sabine Matuschek schrieb:
> Ich habe in einem HTMl Formular 60 Checkboxen, diese haben den Namen
>
> box_1
> box_2
> box_3
Warum nimmst Du kein Array dafür?
> Nun möchte ich auf der nächsten Seite die Boxen weiterverarbeiten bzw. den
> Inhalt ausgeben. Doch hier habe ich irgendwie ein Problem.
>
> Mache ich es einzeln
>
> echo $box_1.'<br>';
> echo $box_2.'<br>';
>
> funktioniert es.
Echt? Das funktioniert? Dann hast Du wohl register_globals auf on stehen
(Sicherheitsloch #1). Das solltest Du als allererstes abschalten und
statt dessen $_GET[] oder $_POST[] verwenden.
Unabhängig davon sollte man Werte, die über ein Formular reinkommen,
_niemals_ ungeprüft weiterverwenden (Sicherheitsloch #2).
> ABer ich möchte es gerne in einer Schleife machen, aber das geht nicht
Doch.
> for ( $x = 1; $x <= 11; $x++ )
> {
> echo $box_.$x .'<br>';
> }
for ($x = 1; $x < 12; ++$x)
echo "${box_$x}<br>";
Mit $_GET[] (und analog mit $_POST[]) sähe das so aus:
for ($x = 1; $x < 12; ++$x)
echo $_GET["box_$x"], '<br>';
Gruß. Claus
Re: html Checkboxen, $box_1, in einer Schleife ausgeben
Klaus Herzberg wrote:
> ich glaube das Stichwort ist "variable Variable".
und ich glaube Du bist verwirrt... :-)
> Also mal ungetestet so:
>
> for ( $x = 1; $x <= 11; $x++ )
> {
> $boxName= "box_".$x;
> echo $$boxName .'<br>';
> }
schon mal drüber nachgedacht das dieses Vorgehen (variable Variablen)
auf Grund der Existenz von $_POST als Array vollkommen sinnfrei ist?
MfG, Ulf
--
_,
_(_p> Ulf [Kado] Kadner
\<_)
^^
Re: html Checkboxen, $box_1, in einer Schleife ausgeben
Hallo,
Ulf Kadner wrote:
> Klaus Herzberg wrote:
>> ich glaube das Stichwort ist "variable Variable".
>
> und ich glaube Du bist verwirrt... :-)
das kann gut sein.
>
>> Also mal ungetestet so:
>>
>> for ( $x = 1; $x <= 11; $x++ )
>> {
>> $boxName= "box_".$x;
>> echo $$boxName .'<br>';
>> }
>
> schon mal drüber nachgedacht das dieses Vorgehen (variable Variablen)
> auf Grund der Existenz von $_POST als Array vollkommen sinnfrei ist?
ja, aber wenn die OP es so haben will.
mfg. klaus.
Re: html Checkboxen, $box_1, in einer Schleife ausgeben
Klaus Herzberg schrieb:
> Ulf Kadner wrote:
>> schon mal drüber nachgedacht das dieses Vorgehen (variable Variablen=
)
>> auf Grund der Existenz von $_POST als Array vollkommen sinnfrei ist?
> ja, aber wenn die OP es so haben will.
Dann liegt es daran, dass sie nicht weiß, wie das richtig geht. Deshalb=
fragt sie hier ja auch. Sie will Arrays benutzen, wusste das nur noch nic=
ht.
MfG
Niels
--
| http://www.kolleg.de =B7 Das Portal der Kollegs in Deutschland |
| http://www.bsds.de =B7 BSDS Braczek Software- und DatenSysteme |
| Webdesign =B7 Webhosting =B7 e-Commerce =B7 Joomla! Content Management =
|
------------------------------------------------------------ ------
funktioniert leider immer nochnicht richtig!
Dann sollte es doch so funktionieren?
for ($x = 1; $x < 12; ++$x)
echo $_POST['box_$x'].'<br>';
"Claus Reibenstein" <4spammersonly [at] web.de> schrieb im Newsbeitrag
news:5rn6q1F15hautU1 [at] mid.individual.net...
Sabine Matuschek schrieb:
> Ich habe in einem HTMl Formular 60 Checkboxen, diese haben den Namen
>
> box_1
> box_2
> box_3
Warum nimmst Du kein Array dafür?
> Nun möchte ich auf der nächsten Seite die Boxen weiterverarbeiten bzw. den
> Inhalt ausgeben. Doch hier habe ich irgendwie ein Problem.
>
> Mache ich es einzeln
>
> echo $box_1.'<br>';
> echo $box_2.'<br>';
>
> funktioniert es.
Echt? Das funktioniert? Dann hast Du wohl register_globals auf on stehen
(Sicherheitsloch #1). Das solltest Du als allererstes abschalten und
statt dessen $_GET[] oder $_POST[] verwenden.
Unabhängig davon sollte man Werte, die über ein Formular reinkommen,
_niemals_ ungeprüft weiterverwenden (Sicherheitsloch #2).
> ABer ich möchte es gerne in einer Schleife machen, aber das geht nicht
Doch.
> for ( $x = 1; $x <= 11; $x++ )
> {
> echo $box_.$x .'<br>';
> }
for ($x = 1; $x < 12; ++$x)
echo "${box_$x}<br>";
Mit $_GET[] (und analog mit $_POST[]) sähe das so aus:
for ($x = 1; $x < 12; ++$x)
echo $_GET["box_$x"], '<br>';
Gruß. Claus
Re: funktioniert leider immer nochnicht richtig!
Sabine Matuschek schrieb:
> Dann sollte es doch so funktionieren?
>
> for ($x = 1; $x < 12; ++$x)
> echo $_POST['box_$x'].'<br>';
Die echo-Zeile ist falsch.
> "Claus Reibenstein" <4spammersonly [at] web.de> schrieb im Newsbeitrag
> news:5rn6q1F15hautU1 [at] mid.individual.net...
Bitte keine Einleitungsromane ...
> [Fullquote gesnipt]
.... und kein Fullquote. Was Du machst, nennt man TOFU (Text oben,
Fullquote unten).
Lies http://learn.to/quote und beherzige, was dort steht.
> Mit $_GET[] (und analog mit $_POST[]) sähe das so aus:
>
> for ($x = 1; $x < 12; ++$x)
> echo $_GET["box_$x"], '<br>';
Hier steht's richtig, nur eben mit $_GET[] statt $_POST[].
Gruß. Claus
Re: funktioniert leider immer nochnicht richtig!
for ($x = 1; $x < 12; ++$x)
echo $_POST["box_$x"], '<br>';
Notice: Undefined index: box_10 in C:\xampp\htdocs\test.php on line 19
"Claus Reibenstein" <4spammersonly [at] web.de> schrieb im Newsbeitrag
news:5rnf9uF14qb84U1 [at] mid.individual.net...
Sabine Matuschek schrieb:
> Dann sollte es doch so funktionieren?
>
> for ($x = 1; $x < 12; ++$x)
> echo $_POST['box_$x'].'<br>';
Die echo-Zeile ist falsch.
> "Claus Reibenstein" <4spammersonly [at] web.de> schrieb im Newsbeitrag
> news:5rn6q1F15hautU1 [at] mid.individual.net...
Bitte keine Einleitungsromane ...
> [Fullquote gesnipt]
.... und kein Fullquote. Was Du machst, nennt man TOFU (Text oben,
Fullquote unten).
Lies http://learn.to/quote und beherzige, was dort steht.
> Mit $_GET[] (und analog mit $_POST[]) sähe das so aus:
>
> for ($x = 1; $x < 12; ++$x)
> echo $_GET["box_$x"], '<br>';
Hier steht's richtig, nur eben mit $_GET[] statt $_POST[].
Gruß. Claus
Re: funktioniert leider immer nochnicht richtig!
Sabine Matuschek schrieb:
> for ($x = 1; $x < 12; ++$x)
> echo $_POST["box_$x"], '<br>';
>
> Notice: Undefined index: box_10 in C:\xampp\htdocs\test.php on line 19
Was genau verstehst Du an dieser Meldung nicht?
> "Claus Reibenstein" <4spammersonly [at] web.de> schrieb im Newsbeitrag
> news:5rnf9uF14qb84U1 [at] mid.individual.net...
Du produzierst immer noch mehrzeilige Einleitungsromane und TOFU! Bitte
stelle das endlich ab!
Gruß. Claus
Re: html Checkboxen, $box_1, in einer Schleife ausgeben
Claus Reibenstein schrieb:
> Echt? Das funktioniert? Dann hast Du wohl register_globals auf on stehen
> (Sicherheitsloch #1). Das solltest Du als allererstes abschalten und
> statt dessen $_GET[] oder $_POST[] verwenden.
>
> Unabhängig davon sollte man Werte, die über ein Formular reinkommen,
> _niemals_ ungeprüft weiterverwenden (Sicherheitsloch #2).
Nur als Anmerkung, register_globals alleine ist kein Sicherheitsloch,
sondern nur mit dem Zusatz, dass nicht initialisierte Variablen
verwendet werden kann es gefährlich werden...
--
Mit freundlichen Grüßen,
Christoph Herrmann
http://dragonprojects.de/