Datenbankstring auslesen und Checkbox checkd

Lapachon

Mitglied
Hi!

Ich habe 9 Checkboxen.

PHP:
<input type="checkbox" value="Urlaubsvertretungen" name="b5_checkbox_welche[]">
<input type="checkbox" value="Projektarbeit" name="b5_checkbox_welche[]">
<input type="checkbox" value="Betriebsfeiern" name="b5_checkbox_welche[]">
<input type="checkbox" value="Weiterbildungsseminare" name="b5_checkbox_welche[]">
<input type="checkbox" value="Sitzungen" name="b5_checkbox_welche[]">
<input type="checkbox" value="Firmenzeitung" name="b5_checkbox_welche[]">
<input type="checkbox" value="Geringf. Besch&auml;ftigung" name="b5_checkbox_welche[]">
<input type="checkbox" value="Freie Mitarbeit" name="b5_checkbox_welche[]">
<input type="checkbox" value="Sonstiges:" name="b5_checkbox_welche[]">
Und diese Abfrage:
PHP:
				      <?      
								$result_checkbox = mysql_query("SELECT b5_checkbox_welche FROM fragebogen_ooe WHERE b5_checkbox_welche LIKE '%Sonstiges:%'");
								$test = mysql_result($result_checkbox, 0, 0);
								mysql_free_result($result_checkbox);
										
								$testaha 		= "$test";
									
								echo $testaha;
								echo "<br>";
									
				      ?>

Wie kann ich es machen dass wenn mir diese Abfrage den String: Firmenzeitung,Geringf. Beschäftigung,Freie Mitarbeit,Sonstiges: zurückliefert, dass Sonstiges angehackt ist?

LG

Lapachon
 
Dazu musst du doch nur herausfinden, ob "Sonstiges:" in deinem String vorkommt.
Also entweder per suche im String (so wie in deinem SQL-String ja auch) oder per aufsplitten in ein Array und gucken, ob einer der Einträge "Sonstiges:" ist.

Eine Aufzählung von Werten innerhalb eines Datenbankfeldes ist aber nicht wirklich vernünftig.

*edit*
(->Verstoß gegen 1. Normalform)
 
Aber wenn ich den query ausführe liefert er mir den ganzen String zurück. Wie kann ich es realisieren das ich sage, egal was in dem Feld steht, wenn z.B. "Sontiges:" drinnen steht liefere mir nur Sonstiges: zurück?
 
vielleicht solltest du dein Gesamtziel mal erläutern, weil wenn es dir nur darum geht, ein Sonstiges anzuhaken oder nicht, ist mit die Umständlichkeit, mal abgesehen von dem bereits erwähnten verstoss gegen die 1. NS (atomarität), doch recht schleierhaft.

um es aber so zu machen, das jede Checkbox angehakt wird, wenn deren Text in dem Result auftaucht würde ich es folgendermassen aufbauen:
Alle checkboxwerte in ein Array schreiben:

PHP:
$cb = array("Urlaubsvertretungen", "Projektarbeit");  //und die restlichen eben.

dann würde ich das array mit einer Schleife durchlaufen und damit die Ausgabe erzeugen. Ausserdem den resultstring nach "," splitten und bei jedem Schleifendruchlauf vergleichen, ob der aktuelle Wert im Array $cb im Array, welches aus dem Splitten resultiert vorhanden ist und dann anhaken:

PHP:
$res_arr = explode(",", $resultstring);  //result splitten
foreach( $cb as $box )
{
 echo "<input type=\"checkbox\" value=\"$box\" name=\"b5_checkbox_welche[]\"";
 echo (in_array($box, $res_arr))?( " checked>"):(">"); //ggf. checked ausgeben
}
 
Ok, hab das so eingebaut, er gibt mir aber den Fehler aus:

Parse error: parse error, unexpected T_STRING in e:\sbx\sozialministerium_elek.survey\admin\admin_survey_save_ooe.php on line 1223

Und so sieht die Zeile 1223 aus:

echo (in_array($box, $res_arr))?( " checked>")<img src="images/smilies/frown.gif" border="0" alt="">">"); //ggf. checked ausgeben
 
Nur so als Hinweis:
Deine Checkboxen haben bei dir alle den selben Namen
PHP:
name="b5_checkbox_welche[]"
- heißt also, du kannst sie bei einem Postback nicht auseinanderhalten.

Weiterhin:
Probiers doch einfach mal so:
PHP:
$res_arr = explode(",", $resultstring);  //result splitten 
foreach( $cb as $box ) 
{ 
echo "<input type=\"checkbox\" value=\"$box\" name=\"b5_checkbox_welche[]\""; 
if (in_array($box, $res_arr))
     echo " checked "; //ggf. checked ausgeben
echo ">";
}
Das dürfte dir doch schon mal reichen.
Wahrscheinlich liegt der Fehler aber nur darin, dass das eine Schließen-Tag nur im checked-Fall ausgegeben wird.
 
Zurück