Checkbox-Werte in ein Array schreiben

Antispy

Mitglied
Hi Zusammen,

ich stehe gerade vor einem kleinen Problem, welches ich leider nicht lösen kann. Ich würde mich über ein paar Tipps freuen :)

Ich habe folgendes Environment:

Ich erstelle einen Fragekatalog, wo die Fragen + Multiplechoice Antworten aus einer Datenbank ausgegelesen werden.
Nun habe ich leider ein Problem beim auswerten dieses Fragebogens.

Die Antworten werden zu jeder Frage aus der DB geladen. Die DB Abfrage sieht folgendermaßen aus:

PHP:
while($output = mysql_fetch_array($get_answer)){
	echo "<tr><td width='20'><input type='checkbox' name='".$output['question_ID']."' value='".$output['ID']."'></td><td>".$output['answer']."</td></tr>";
}

Da es aber möglich sein soll, dass mehrere Checkboxen ausgefüllt werden, würd ich die Werte gerne in ein Array schreiben. Aber wie mache ich dieses am besten, weil ich hier ja nun schon ein Array habe: <input type='checkbox' name='".$output['question_ID']."'

Auf der Seite, wo die Werte dann ausgewertet werden, möchte ich die Werte dann mit foreach auslesen. Hier wird aber momentan noch kein Array erkannt (ist ja auch logisch, da nur ein Wert übergeben wird).

Habt ihr hier eine Idee, wie ich entweder die Werte in ein Array schreiben kann oder die Werte sonst auslesen könnte?

Vielen Dank schonmal im Voraus!!

Lieben Gruß,
Antispy
 
Wenn die question_ID bei allen Antworten zu einer Frage gleich ist, dann kannst du es so lösen:
HTML:
<input type="checkbox" name="question_2[]" value="1" />
<input type="checkbox" name="question_2[]" value="2" />
<input type="checkbox" name="question_2[]" value="3" />
 
Zuletzt bearbeitet:
Hi,

genau, der Name ist überall gleich, allerdings befindet sich das in einer Schleife und so is der Wert (aus deinem Beispiel) nicht immer "question_2", sondern eine Variable.
In meinem Fall die Variable $output['question_ID']

Diese Variable entsteht aus einer Datenbankabfrage

PHP:
$get_answer = mysql_query("SELECT que.........
while($output = mysql_fetch_array($get_answer))
echo "<tr><td width='20'><input type='checkbox' name='".$output['question_ID']."' value='".$output['ID']."'></td><td>".$output['answer']."</td></tr>";
...

Ich habe nun schon folgendes versucht, was leider aber auch nicht geht:

PHP:
$name = $output['question_ID'];
echo "<tr><td width='20'><input type='checkbox' name='".$name[]."' value='".$output['ID']."'></td><td>".$output['answer']."</td></tr>";

Lieben Gruß,
Antispy
 
Probier es lieber so:
PHP:
$name = $output['question_ID']; 
echo "<tr><td width='20'><input type='checkbox' name='".$name."[]' value='".$output['ID']."'></td><td>".$output['answer']."</td></tr>";
 
Das sieht super aus!! :)
Danke danke!!

Nur nun bekomme ich leider immer noch ein Problem bei der Auswertung. Ich denke, dass dieses auch an dem "doppelten" Array liegt.

PHP:
foreach($_REQUEST[$output['question_ID']] as $outputvalue){
	if($outputvalue = $output['ID'])
		$is_checked = 1;
}

Die Fehlermeldung ist

Warning: Invalid argument supplied for foreach() in .. und weißt genau auf die line bei "foreach".

Lieben Gruß,
Antispy
 
Ich sehe da keinen Fehler, aber ich sehe etwas anderes: Vergleiche sehen in PHP so aus: == Wenn du nur ein Gleichheitszeichen verwendest, dann ist es eine Zuweisung.
 
Ahh, das hab ich total übersehen mit dem Gleichheitszeichen :) Danke!

Bin meine Fehlermeldung nun auch los! Das Problem war, dass ich (je nachdem wie viele richtige Antworten es gibt) entwedeer radioboxen oder checboxen verwendet habe.
Bei den Radioboxen habe ich natürlich kein Array ^^ ;)

Danke für deine nette Hilfe!
Werde das hier nun schließen und du bekommst noch eine nette Bewertung! :)

Lieben Gruß und ein schönes Wochenende!

Antispy
 
Zurück