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
Sabine Matuschek [ Mi, 05 Dezember 2007 09:18 ] [ ID #1886579 ]

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/
Christoph Herrmann [ Mi, 05 Dezember 2007 09:28 ] [ ID #1886580 ]

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.
Klaus Herzberg [ Mi, 05 Dezember 2007 09:29 ] [ ID #1886581 ]

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
Claus Reibenstein [ Mi, 05 Dezember 2007 09:45 ] [ ID #1886583 ]

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
\<_)
^^
Ulf Kadner [ Mi, 05 Dezember 2007 10:27 ] [ ID #1886585 ]

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.
Klaus Herzberg [ Mi, 05 Dezember 2007 10:37 ] [ ID #1886587 ]

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 =
|
------------------------------------------------------------ ------
Niels Braczek [ Mi, 05 Dezember 2007 10:49 ] [ ID #1886588 ]

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
Sabine Matuschek [ Mi, 05 Dezember 2007 10:49 ] [ ID #1886589 ]

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
Claus Reibenstein [ Mi, 05 Dezember 2007 12:10 ] [ ID #1887367 ]

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
Sabine Matuschek [ Mi, 05 Dezember 2007 12:33 ] [ ID #1887369 ]

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
Claus Reibenstein [ Mi, 05 Dezember 2007 12:41 ] [ ID #1887370 ]

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/
Christoph Herrmann [ Mi, 05 Dezember 2007 13:56 ] [ ID #1887375 ]
PHP » de.comp.lang.php.misc » html Checkboxen, $box_1, in einer Schleife ausgeben

Vorheriges Thema: Wie überprüfe ich die $_POST Variable auf ihre Existenz
Nächstes Thema: Cookies