Problem mit arrays

tobbimann

Mitglied
Hallo!
Nach langer Zeit bin auch mal wieder hier und brauche Hilfe
Folgendes Problem:

Ich möchte die Daten aus einem Formular in einem array sammeln und dann in der DB speichern. Es kommt aber folgende Fehlermeldung:
Notice: Undefined index: i in ...
Fatal error: [] operator not supported for strings in ...

Bei dem Formular handelt es sich um Radiobuttonpaare, bei denen man jeweils nur einen auswählen kann. Je nach Auswahl sollte sich dann ein array nach dem Schema "a,b,b,a,b, usw." ergeben. Klappt aber leider nicht.

Hier noch die radios:
Code:
<input type="radio" name="1" value="a" />
<input type="radio" name="1" value="b" />

Und mein PHP Teil:
PHP:
$choices = $_POST['1'];
for ($i=2; $i<21; $i++) { 
	$choices[] = $_POST['i']; }

echo ($choices);

Insgesamt gibt es 20 Buttonpaare

Danke für eure Hilfe
 
THX 4 help!

Funktioniert aber nicht!

Es kommt wieder: Fatal error: [] operator not supported for strings in...

Oder ist die Funktion von Grund an falsch
 
Gehören bei deinem Teil:

PHP:
 $choices = $_POST['1'];
for ($i=2; $i<21; $i++) {
    $choices[] = $_POST['i']; }

echo ($choices);

nicht [] hinter das erste choices schon? Genauso wie beim echo? Oder irre ich mich?
 
Wo ist der Sinn des Scriptes? Weil RadioBoxen mit gleichem Namen kann man doch nur eine davon auswählen und dann brauchst du keine for-Schleifen und Arrays um den Wert zu bekommen, weil es ja eh nur einer ist.
 
Ich würde die Radio-Namen nicht nur aus einer Zahl machen (ist doch eine 1?), sondern z.B. radio1, radio2 usw. nennen:
HTML:
<input type="radio" name="radio1" value="a" />
<input type="radio" name="radio1" value="b" />

<input type="radio" name="radio2" value="a" />
<input type="radio" name="radio2" value="b" />

...

Dann kannst Du sie so in Dein Array choices bekommen:
PHP:
$choices = array();
for ($i=1; $i<21; $i++) {
    $choices[] = $_POST['radio'.$i];
}

//ausgeben eines Array mit echo geht nicht, daher:
foreach($choices as $c) {
    echo ($c); 
}

Das ganze mit einem String, statt einem Array:
PHP:
$choices = '';
for ($i=1; $i<21; $i++) {
    $choices .= $_POST['radio'.$i];
}

echo ($choices);

Du musst jedoch auf jeden Fall Einträge vorselektieren, da sonst die Namen, bei denen der User keinen markiert, gar nicht übertragen werden.
Wenn Du das jedoch zulassen willst (wiederspricht aber dem Radio-Button!), solltest Du so auslesen:
PHP:
$choices = array();
for ($i=1; $i<21; $i++) {
    $choices[] = (empty($_POST['radio'.$i]))?'0':($_POST['radio'.$i]);
}

//ausgeben eines Array mit echo geht nicht, daher:
foreach($choices as $c) {
    echo ($c); 
}

//alternativ statt der letzten Schleife könntest 
//Du auch mit implode arbeiten, 
//wenn Du die Kommas als Seperator 
//im String haben willst:
$choices=implode(",",$choices);
echo $choices;
Ich habe dabei die Ziffer 0 als String für "keine Auswahl" genommen.

Hoffentlich habe ich Dein Problem richtig verstanden.

Gruß hpvw
 
Zurück