PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Formular mit Auswahlmöglichkeiten aus einer MySQL-Tabelle


jedi23
31.12.2011, 16:30:35
Hallo zusammen,

über den HTML-Tag <form action=....> biete ich verschiedene vorgegebene Auswahlmöglichkeiten an, die an ein PHP Skript übergeben und in eine Datenbank gespeichert werden.

<select name='interpret' size='3'>
<option>Abba</option>
<option>Bap</option>
<option>Celine Dion</option>
<option>Empire of the Sun</option>
<option>Foo Fighters</option>
<option>Gorillaz</option>
</select>

Jetzt möchte ich aber, dass diese Auswahlmöglichkeiten nicht von Hand in den Quelltext geschrieben werden, sondern dass die Interpreten aus einer weiteren Tabelle abgerufen werden und dann in dieser Liste zur Auswahl auftauchen.

Wer kann mir Tipps zur Realisierung geben?

jedi23
31.12.2011, 17:37:35
Dazu habe ich jetzt etwas gefunden:

$sql = mysql_query("SELECT * FROM musikliste");
$i=0;
while($result = mysql_fetch_array($sql)) {
$a[$i]=$result['interpret']; $i++; }


$companies = array(
'Microsoft' => 1,
'Google' => 2,
'Apple' => 3
);

function generateSelect($name = '', $options = array()) {
$html = '<select name="'.$name.'">';
foreach ($options as $option => $value) {
$html .= '<option value='.$value.'>'.$option.'</option>';
}
$html .= '</select>';
return $html;
}
$html = generateSelect('company', $companies);
echo $html;
?>

In dem Drow Down Menü werden jetzt diese 3 Firmennamen angezeigt.
Verwende ich aber in der vorletzten Zeile mein eigenes Array /*$html = generateSelect('company', $a);*/

so stehen in der Liste nur die index-Zahlen des Array (0 bis Listenende) und nicht die Tabelleneinträge. Diese kann ich ja schließlich auch mit echo $a[$i]; anzeigen lassen, aber wie kann ich sie nun in meiner Drop Down Liste anzeigen?

derNichtGlaubt
31.12.2011, 17:37:53
als Anregung z.B. ungefähr so:
$R = mysql_query("SELECT ......"); // das was Du aus der 'anderen' Tabelle abfrägst
while($X = mysql_fetch_row($R)) echo '<option>'.$X[0]].'</option>'; // das ins select-tag

guten Rutsch

jedi23
31.12.2011, 18:15:31
Danke für deine Anregung.
So erhalte ich aber kein Drow-Down Menü, sondern nur alle Werte untereinander. Außerdem bekomme ich wieder nur Zahlen angezeigt, und nicht die eigntlichen Tabelleninhalte.


So hab ich es jetzt fast zufriedenstellend gelöst:
function generateSelect($name = '', $options = array()) {
$html = '<form action="submit.php" method="post"><select name="interpret">';
foreach ($options as $option => $value) {
$html .= '<option value='.$value.'>'.$option.'</option>';
}
$html .= '</select></br>
<input type="Submit" name="ok" value="Abschicken"></input>
</form>';
return $html;
}



Wenn ich aber diese "index-Zahlen" auswähle und an submit.php übergebe, ($modell=$_POST['interpret'];)
schreibt er tatsächlich den gewünschten Tabelleninhalt in meine neue Tabelle.

Bleibt nur noch die Frage: Warum bekomme ich im Drop Down Menü nur die Index-Zahlen angezeigt.

meikel (†)
31.12.2011, 18:22:17
Danke für deine Anregung.
So erhalte ich aber kein Drow-Down Menü,
Na einen kleinen Beitrag zu Deinem Script willste doch sicherlich auch noch leisten können/wollen.

jedi23
01.01.2012, 16:10:31
Frohes Neues allerseits!


Na einen kleinen Beitrag zu Deinem Script willste doch sicherlich auch noch leisten können/wollen.

Versteh nicht ganz wie zu das meinst. Habe diese Page gefunden
http://www.kavoir.com/2009/02/php-drop-down-list.html
und habe die "function generateSelect" soweit verändert, dass meine Auswahl mittels <form action=...> an ein weiteres PHP Skript übergeben werden kann.

$html .= '<option value='.$value.'>'.$value.'</option>';
mit dieser Zeile bekomme ich jetzt auch die richtigen Texte angezeigt!

meikel (†)
02.01.2012, 00:10:33
Versteh nicht ganz wie zu das meinst.
Wenn Du ein Dropdown Listenfeld haben willst, dann guck da nach, wies aussehen muß:
http://de.selfhtml.org/html/formulare/auswahl.htm#listen