Multiples <select> bearbeiten (selected) HILFE!

Sebigf

Erfahrenes Mitglied
Hallo zusammen!

Ich habe ein "multiples" select-feld erstellt welches man nutzen kann um mehrere IDs zu markieren und in einer SQL DB zu speichern. Soweit so gut, das geht auch soweit recht gut :D

Nun zu meinem Problem...

Ich habe die IDs mit dem Trennwert "::" gespeichert und lese sie anhand von explode() wieder einzeln aus.

Aber ich bekomme Probleme beim Auswerten diese Werte.

So sieht das ganze bisher aus:


PHP:
	echo "<SELECT NAME=\"plattform[]\" ID=\"plattform\" CLASS=\"textarea\" STYLE='width:235px' SIZE=\"6\" multiple>";

	$exp = explode("::", $titel['plattformen']);
		
    $get = "SELECT * FROM kategorien WHERE (bereich = 'titel') && (typ = 'top') && (aktiv = 'yes') ORDER BY bezeichnung ASC";
	$getit = mysql_query($get);
	while($kat = mysql_fetch_array($getit))
	{

		
	foreach ($exp as $split)
	{
	if($kat['id'] == $split)	
	echo "<OPTION VALUE=\"".$kat['id']."\" selected>".$kat['bezeichnung']."\n";	 
	}	
	
    echo "<OPTION VALUE=\"".$kat['id']."\">".$kat['bezeichnung']."\n";    	
	
	}
	echo "</SELECT>";

Wie ihr sehen könnt, ist es "eigentlich" funktionstüchtig. Aber es werden auch die <option> felder angezeigt die bereits als "selected" ausgewertet wurden.

Bitte um Hilfe!

PS: Mit geht es nur um die Struktur, damit ich selectierte und nicht selectierte zeilen angezeigt bekomme, ohne, dass sie sich wiederholen.

Danke
 
PHP:
	echo "<SELECT NAME=\"plattform[]\" ID=\"plattform\" CLASS=\"textarea\" STYLE='width:235px' SIZE=\"6\" multiple>";

	$exp = explode("::", $titel['plattformen']);
		
    $get = "SELECT * FROM kategorien WHERE (bereich = 'titel') && (typ = 'top') && (aktiv = 'yes') ORDER BY bezeichnung ASC";
	$getit = mysql_query($get);
	while($kat = mysql_fetch_array($getit))
	{

		
	foreach ($exp as $split)
	{
	if($kat['id'] == $split)	
	echo "<OPTION VALUE=\"".$kat['id']."\" selected>".$kat['bezeichnung']."\n";	 
	}	
else {
	
    echo "<OPTION VALUE=\"".$kat['id']."\">".$kat['bezeichnung']."\n";    	
}	
	}
	echo "</SELECT>";
 
Hallo!

Danke für die schnelle Antwort.

Aber ich glaube das kann net gehen, oder hast du schonmal eine foreach() schleife mit else gesehen?

Meinst ich soll die else teile nach dem if einbauen oder wie meinst du das?

danke
 
:)

Das habe ich mir gedacht ^^ Habe es auch so korrigiert.
Aber problem ist, sobald mehr als 1 Wert als "selected" markiert werden soll, wiederholen sich alle Einträge so oft wie es "selected" felder gibt.

Deswegen auch der Post :D

Mir geht es darum, dass einige markiert werden und der rest halt nicht, und das ohne das sich welche einträge wiederholen. :)


Ich hoffe ich bekomme das noch hin irgendwie, nervt mich schon total :D

Danke
 
Ok, Versuch:

PHP:
while($kat = mysql_fetch_array($getit)) {
    echo (in_array ($kat['id'], $exp)) ? "<OPTION VALUE=\"".$kat['id']."\" selected=\"selected\">".$kat['bezeichnung']."\n" : "<OPTION VALUE=\"".$kat['id']."\">".$kat['bezeichnung']."\n";
}
 
Zurück