Aufzählungsliste erzeugen

Code:
is_array(isset($_POST['blumen']))

Du prüfst dort, ob der Rückgabewert von isset($_POST['blumen']) ein Array ist...das kann er nicht sein, weil isset nur einen booleschen Wert zurückgibt.

Also erst per isset prüfen, ob die Variable existiert, und danach, ob sie ein Array ist.
 
Hallo Sven Mintel,

vielen Dank für deinen Denkanstoss. Hat mich jetzt endlich auf die richtige Spur gebracht. - Und siehe da kaum sitz ich fast 4 Stunden da schon funktioniert alles wie am Schnürchen:-)

Nochmal das korrigierte PHP (vielleicht gibts ja da noch a weng was zum verbessern, oder so:-) - oder evtl. kann jemand das als kleine Anregung für sein Script mal verwenden.

PHP:
<?php 

    error_reporting(E_ALL);
	

	
	// Festlegung eines bestimmten Users - wird nur HIer gebraucht !!
	$_SESSION['UserID'] = "1";  
	
	// Variablendefinition wegen undefined errors
	$error = "";
	$liste = "";


    $MYSQL_HOST = 'localhost';
    $MYSQL_USER = 'root';
    $MYSQL_PASS = password
    $MYSQL_DATA = datenbank

    $connid = mysql_connect($MYSQL_HOST, $MYSQL_USER, $MYSQL_PASS) OR die("Error: ".mysql_error());
    mysql_select_db($MYSQL_DATA) OR die("Error: ".mysql_error());
	
	

		// a) Auslesen von hobbys - besonders wichtig bei neuen Usern und das Feld somit leer
		// ist			
        $sql = "SELECT
                        blumen
                FROM
                        xxxxxxxx
						
                		WHERE
                        		id = '".$_SESSION['UserID']."'
               ";
			   
			   
        $result = mysql_query($sql) OR die("<pre>\n".$sql."</pre>\n".mysql_error());
        $row = mysql_fetch_array($result);
		
		// Nach dem Auslesen aus der DB
		// String wieder zu einem Array zusammensetzen
		
		$blumen= explode(",",$row['blumen']);

		if ( $row['blumen'] == "" OR $row['blumen'] == "0") {
		
			// errorfeld setzen
			$error = "Es wurde noch nichts ausgewählt.";
			
			}
		
		if ( $row['blumen'] > 0) {
		
			// Erstellen der Aufzählungsliste, getrennt jeweils mit einem Komma und Leerfeld 
			$liste = implode(", ",$blumen);
			
			//errorfeld muß leer sein
			$error = "";
			
				}
 
	
    	if(isset($_POST['submit']) AND $_POST['submit'] == 'wech'){ 
		
			if (isset($_POST['blumen']) == "" OR $_POST['blumen'] == "0") {
 
                               // Vorbelegung mit 0
				$blumen= "0";
				
				// errorfeld setzen
				$error = "Es wurde noch nichts ausgewählt.";

				
		// leeres Feld blumen updaten		
		$sql = "UPDATE
					   
                xxxxxxxxx
				
                SET
                        blumen='".mysql_real_escape_string($blumen)."'
                WHERE
                        id = '".$_SESSION['UserID']."'
                   "; 
				   
     mysql_query($sql) OR die("<pre>\n".$sql."</pre>\n".mysql_error()); 	

	   }
	   
	   
			if (isset($_POST['blumen']) ? 1 : 0) {
	
			//Array festlegen
			$blumen= $_POST['blumen'];
	
			// Array zu einem String zusammenfügen -> Komma als Trennzeichen
			// Diesen String in der DB speichern 
			$blumen= implode(",",$blumen);
	
			// errorfeld muß leer sein
			$error = "";
			
	   // b) Datenbank mit der neuen Einstellung updaten - array $blumen ist jetzt zu 
	   // einem String umgewandelt und speicherbar! - ohne "Stringumwandlung" ist 
	   // korrektes abspeichern in DB nicht möglich	
	
		$sql = "UPDATE
					   
                xxxxxxx
				
                SET
                        blumen='".mysql_real_escape_string($blumen)."'
                WHERE
                        id = '".$_SESSION['UserID']."'
                   "; 
				   
     mysql_query($sql) OR die("<pre>\n".$sql."</pre>\n".mysql_error()); 	
  		
		
		}

}
		
		// c) Auslesen und Ausgabe der geänderten Checkboxen		
        $sql = "SELECT
                        blumen
                FROM
                        xxxxxxxx
						
                		WHERE
                        		id = '".$_SESSION['UserID']."'
               ";
			   	
			   
        $result = mysql_query($sql) OR die("<pre>\n".$sql."</pre>\n".mysql_error());
        $row = mysql_fetch_array($result);
		
		// Nach dem Auslesen aus der DB
		// String wieder zu einem Array zusammensetzen
		// gefunden bei: http://www.selfphp.de/forum/showthread.php?t=6275
		$blumen= explode(",",$row['blumen']);

		if ( $row['blumen'] == "" OR $row['blumen'] == "0") {
		
			// errorfeld setzen
			$error = "Es wurde noch nichts ausgewählt.";
					
					
					}

		else {
		
			// Erstellen der Aufzählungsliste, getrennt jeweils mit einem Komma und Leerfeld 
			$liste = implode(", ",$blumen);
			
			
				}
						

	
?>


und das jetzt funktionsfähige Formular mit den Checkboxen dazu

HTML:
           <form action="<?php echo htmlentities($_SERVER['PHP_SELF']); ?>" method="post">

<label>
<input type="checkbox" name="blumen[]" value="Tulpen" <?php if (is_array($blumen) && in_array("Tulpen", $blumen) ){ echo 'checked = "checked"'; } ?> /> Tulpen</label><br>

<label>
<input type="checkbox" name="blumen[]" value="Rosen" <?php if (is_array($blumen) && in_array("Rosen", $blumen) ){ echo 'checked = "checked"'; } ?> /> Rosen</label><br>


<label>
<input type="checkbox" name="blumen[]" value="Nelken" <?php if (is_array($blumen) && in_array("Nelken", $blumen) ){ echo 'checked = "checked"'; } ?> /> Nelken</label><br>


<label>        
<input type="checkbox" name="blumen[]" value="Astern" <?php if (is_array($blumen) && in_array("Astern", $blumen) ){ echo 'checked = "checked"'; } ?> /> Astern</label><br />

<label>
<input type="checkbox" name="blumen[]" value="Begonien" <?php if (is_array($blumen) && in_array("Begonien", $blumen) ){ echo 'checked = "checked"'; } ?> /> Begonien</label>


<br /><br />
 <input name="submit" type="submit" value="wech"  />

 		</form>

<?php echo $error . $liste; ?>

Das bischen Code da oben hat mich jetzt gut und gerne 3 Wochen belastet. Aber Ende gut alles gut. Nochmals vielen lieben Dank für deine Hilfe, wenn ich auch die praktische Umsetzung nicht hin bekommen habe, obwohl mir das theoretisch sehr klar geworden ist.

Gruss
strolch_007

PS: Mein Fehler war das ich nicht $_POST abfragen durfte, sondern direkt $blumen!
 
Zuletzt bearbeitet:
Zurück