DB Eintrag spliten und in Dropdown aufnehmen

samke

Mitglied
Hi,

ich hab hier schon rumgesucht, aber einfach nichts passendes gefunden, vielleicht auch weil ich nicht wußte wie ich es nennen sollte.

Ich habe eine DB wo in einer Zelle (zb. Klasse) "K1, K2, K3, K4, K5" steht - wird per Formular in die DB geschrieben.
Wie schaffe ich es jetzt, die Zelle auszulesen und die Werte dynamisch in ein Dropdown Menü zubekommen?

Die Werte müssen ja in:
PHP:
<select name="klasse" id="klasse">
            <option value="" selected></option>
            <option value="Wert1 (also K1)">(also)K1</option>
            <option value="Wert2 (also K2)">(also)K2</option>
            <option value="Wert3 (also K3)">(also)K3</option>
            <option value="Wert4 (also K4)">(also)K4</option>
            <option value="Wert5 (also K5)">(also)K5</option>
(wenn es 6 Werte wären, müsste halt noch eine 6 "Reihe" automatisch sich einfügen) 
          </select>

Irgentwie muss ja erkannt werden, das nach dem ", " ein neuer Wert kommt.

Kann mir einer vielleicht sagen wie das geht?
Vielen Dank schonmal!

bye
 
PHP:
$sql = "SELECT * FROM tabelle";
$query = mysql_query($sql);
?>
<select name="klasse" id="klasse"
<? while ($ds = mysql_fetch_object($query)){ ?>
<option value="<?=$ds->feld?>" selected><?=$ds->feld?></option> 
<? } ?>
</select>

Oh, hab da was überlesen, mein Beispiel funktioniert nur, wenn jedes K in einer eigenen Zeile in deiner Datenbank steht.

mfg
forsterm
 
Zuletzt bearbeitet:
Also nehmen wir mal an, Deine Liste mit K's steht in einer Variable namens $liste.
Dann könnte das ganze so aussehen:
PHP:
    <select name="liste">
      <option></option>
<?php
$liste = "K1, K2, K3, K4, K5, K6, K7";
$array = explode(", ", $liste);
for($i = 0; $i < count($array); $i++)
{
  echo "      <option value=\"".$array[$i]."\">".$array[$i]."</option>
";
}
?>
    </select>

redlama
 
Hallo, danke für die schnellen beiden Antworten.
Hab jetzt mal das zweite ausprobiert - soweit so gut, funktioniert, nur jetzt habe ich das umgebaut.

PHP:
<select name="klasse"> 
      <option></option> 
<?php
    $sql = "SELECT
              id,
              vera_klassen
        FROM
              veranstaltungsdaten
        WHERE
              id='".$id."'";

$liste = "".$row['vera_klassen']."";
$array = explode(", ", $liste); 
for($i = 0; $i < count($array); $i++) 
{ 
  echo "      <option value=\"".$array[$i]."\">".$array[$i]."</option>"; 
} 
?> 
    </select>

Irgentwie schreibt der den Wert aus "vera_klassen" nicht richtig in die Variabele $liste.
Was hab ich da nun schon wieder falsch gemacht, hab schon paar Sachen ausprobiert, aber dann kommen Fehler.
So zeigt er die Seite an, aber in dem Dropdown Menü sind keine Werte.
 
Zuletzt bearbeitet:
Hi,
ich kann dir hier mal zeigen wie ich es für meine Homepage gemacht hab, ich denke das kannste ganz gut für dein Beispiel umschreiben:
PHP:
<?php
 $db = mysql_connect($HOST, $USER, $PWD) or die(mysql_errno()." : ".mysql_error());
 mysql_select_db($BASE, $db) or die(mysql_error());

 $sql = mysql_query("SELECT * FROM news");
 $num=mysql_num_rows($sql);
 
 $choose = "<Select name=\"news_id\" class=\"select\" size=\"1\">";
 $choose .="<option selcted value=\"\">-- Bitte wählen --</option>\n";

 for($i=0; $i<$num; $i++)
	{
	$NEWS_ID   = mysql_result($sql, $i, "id");
	$NEWS_TITEL = mysql_result($sql, $i, "titel");
	$NEWS_AUTOR = mysql_result($sql, $i, "autor");	
	$choose .="<option value=\"$NEWS_ID\">$NEWS_TITEL ( von $NEWS_AUTOR )</option>";
	}
 $choose .="</select>";
 // und dann wo es benötigt wird echo $choose;
?>
mfg
 
Hi!

Du hast zwar das select Statement und Du willst auch das Ergebnis des Statements auswerten, aber Du hast vergessen, das Statement an die Datenbank zu übergeben, ...

redlama
 
Öm, könntest du das auch noch mal für nen Anfänger wie mich "übersetzen"?
Hab jetzt nicht so ganz verstanden was ich ändern muss - hab das so quasi bei mein anderen sachen auch gemacht, wenn ich nen Wert aus der DB auslesen wollte.
Sorry wenn ich dich nerve.
 
soa, habs nun doch noch verstanden :rolleyes:

Musste so:
PHP:
<select name="klasse" id="klasse"> 
            <option value="" selected></option> 
<?php
    $sql = "SELECT
			  id,
              vera_klassen
        FROM
              veranstaltungsdaten
        WHERE
              id='".$id."'";
$result = mysql_query($sql) OR die(mysql_error());
while($row = mysql_fetch_assoc($result)) 

$liste = $row['vera_klassen'];
$array = explode(", ", $liste); 
for($i = 0; $i < count($array); $i++) 
{ 
  echo "      <option value=\"".$array[$i]."\">".$array[$i]."</option>"; 
} 
?> 
</select>
 
Schau mal in den Quellcode von mauli_rulez.
Da hat er/sie(?) in der ersten Zeile mit mysql_connect() eine Verbindung zur Datenbank aufgebaut.
Danach wurde mit mysql_select_db() die entsprechende Datenbank angesteuert, deren Tabellen für die Statements durchsucht werden sollen.
Dann hat er/sie(?) eine select Statement kreiert und diese dann mit mysql_num_rows() an die Datenbank gesendet.
Wie sieht denn Dein Code aus? Baust Du eine Verbindung zur Datenbank auf und wählst eine Datenbank aus?
$row weiß in Deine Fall ja garnicht, was 'vera_klassen' sein soll und wo es herkommt, ...

redlama

EDIT: Dann funktioniert es jetzt?
 
so habs nun doch noch Verstanden, sorry.

Muss ja so:
PHP:
<select name="klasse" id="klasse"> 
            <option value="" selected></option> 
<?php
    $sql = "SELECT
			  id,
              vera_klassen
        FROM
              veranstaltungsdaten
        WHERE
              id='".$id."'";
$result = mysql_query($sql) OR die(mysql_error());
while($row = mysql_fetch_assoc($result)) 

$liste = $row['vera_klassen'];
$array = explode(", ", $liste); 
for($i = 0; $i < count($array); $i++) 
{ 
  echo "      <option value=\"".$array[$i]."\">".$array[$i]."</option>"; 
} 
?> 
</select>

Danke für die Hilfe
bye
 
Zurück