inhalt aus db -> in array trennen und auf true prüfen

sipoh

Erfahrenes Mitglied
Guten Tag,

ich stehe gerade vor dem Problem, dass ich die durch einen User getätigte Checkbox-Auswahl aus der DB auslese. Ankreuzmöglichkeiten gibt es z. Z. 4. Die stehen, würde man sie alle selektieren, so in der DB: eins. zwei. drei. vier.

Um die ausgewählten Sachen zu verarbeiten und in die DB zu schreiben, mache ich derzeit folgendes:

Code:
   for($i = 0; $i < count($_POST['ichbin']); $i++)
    {
       $einsch .= $_POST['ichbin'][$i].". ";
    }

...

// schreibe $einsch in die DB

Um dieCheckboxen beim nächsten Besuch auf "checked" zu setzen, war mein Gedanke folgender:

Code:
for($i = 0; $i < 4; $i++)
    {
	 $str = $row['einschaetzung']; // Sachen aus DB
                $array = explode(".",$str);

	 echo $array[$i]."<br />";

	 echo "<br /><br /><br />";

	 if (in_array($str, $array)) echo 'ja';
	 else echo 'nein';
}

Ich zerlege also die Werte eins. zwei. vier. (drei. z. B. nicht ausgewählt.) mit explode und frage dann mit in_array ab, ob der "explodierte" Wert in $str drin ist.
Irgendwie habe ich da aber einen massiven Denkfehler. Denn es ist doch in jedem Fall "true". Ich müsste also alle möglichen! Werte mit dem "explodierten" Zeug vergleichen?
 
Nein, leider nicht:
Das Array sieht ja so aus: ("eins. ", "zwei. ", "vier. ")
Und du fragst mit in_array() ob der String "eins. zwei. vier. " in diesem array enthalten ist. Und dieser lange String ist in keiner der drei Arraykomponenten enhalten.

Du könntest es so machen:
PHP:
$werte = array("eins. ", "zwei. ", "drei. ", "vier. ");
	 $str = $row['einschaetzung']; // Sachen aus DB
for ($i = 0; $i < sizeof($werte); $i++)
     {
         if (strpos($str, $werte[$i])===false) {
            //checkbox nicht checken
         } else {
            //checkbox checken
         }
     }
Allerdings ist es insgesamt nicht sehr schön, solche Werte als Zahlworte in der DB zu speichern...
 
Gut, ich werde das mal probieren.

Die Zahlenworte stehen representativ zum eigentlichen Inhalt, wie z. B. schön, toll, klasse u. s. w.

:)
 
Zurück