PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Auswahl wie realisieren


daFish
05.05.2003, 17:36
Hi,

ich möchte folgendes mit PHP in Verbindung mit MySQL machen.

Ich hab eine Tabelle mit Namen Komponisten. In dieser gibt es die Spalten Name und Vorname.

Wie erstelle ich jetzt eine Dropdown Liste wo die Werte aus Name und passendem Vornamen drin stehen und zwar so:

Davis, Don
Mancina, Mark


???

Bin totaler Neuling auf dem Gebiet.

Vielen Dank.

Gruss Fish

martin
06.05.2003, 00:06
ich denke, das einfachste wäre:


<?php
error_reporting(E_ALL);

$blubb = @mysql_connect('host', 'name', 'kennwort')
or die ('Die MySQL Verbindung konnte nicht aufgebaut werden.<br />Fehler: ' .mysql_error());

@mysql_selct_db('datenbank', $blubb)
or die('Die Datenbank konnte nicht angesprochen werden.<br />Fehler: ' .mysql_error());

$query = @mysql_query("SELECT * FROM TABELLE", $blubb)
or die('Fehler beim Ausführen der Datenbankabfrage.<br />Fehler: ' .mysql_error());

?>

<form action="index.php" method="post">
<select name="komponisten" size=1>

<?php

while ($komponist = mysql_fetch_assoc($query)) {

echo "<option value='{$komponist['id']}'>{$komponist['name']}, {$komponist['vorname']}</option>";

}

@mysql_close($blubb);

?>

</select>


ich hab das nur eben schnell hingeschrieben, ohne da weiter drüber nachzudenken. mögliche systaxfehler möge man mir um diese zeit verzeihen. ;)

du sollte deine tabelle aber ändern und eine spalte mit dem namen 'id' hinzufügen und diese auf 'auto_increment' stellen.
das wäre dann wie die 'userid' in vB. und das lässt sich viel effizienter und auch bequemer handhaben als wenn du in queries mit name oder vorname arbeitest. ich hab das in meinem beispiel auch so gehandhabt.
wenn du dir den quelltext der späteren ausgabe ansiehst, wird es vielleicht ersichtlicher, wo da die 'id' verwendet wird.

muss ich das weiter erläutern?

daFish
06.05.2003, 07:57
Original geschrieben von martin
du sollte deine tabelle aber ändern und eine spalte mit dem namen 'id' hinzufügen und diese auf 'auto_increment' stellen.
das wäre dann wie die 'userid' in vB. und das lässt sich viel effizienter und auch bequemer handhaben als wenn du in queries mit name oder vorname arbeitest. ich hab das in meinem beispiel auch so gehandhabt.

In der Tabelle gibt es auch eine Spalte "id", aber danke für den Hinweis. Ich werd es mal testen.

Gruss Fish

daFish
21.10.2003, 11:36
Sorry das ich den Thread nochmal aus der Versenkung hole, aber ich habe noch eine Frage bezüglich dieser Auswahl.
Es funktioniert ansich sehr gut, nur ist mir aufgefallen das es nicht funktioniert wenn ich diese Auswahl mehrmals in einem Script habe.

Wird das Array nur einmal verwendet und dann geleert?

Hier mal ein Code-Schnipsel:


<tr><td>Komponist (1):</td><td><select name="ttlcomp1" size="1">
<?
while($komponist =mysql_fetch_assoc($comp_drop)){
echo "<option value='{$komponist['comp_id']}'>{$komponist['comp_name']}, {$komponist['comp_vname']}";
}
?></select></td><td></td></tr>
<tr><td>Komponist (2):</td><td><select name="ttlcomp2" size="1">
<?
while($komponist =mysql_fetch_assoc($comp_drop)){
echo "<option value='{$komponist['comp_id']}'>{$komponist['comp_name']}, {$komponist['comp_vname']}";
}
?></select></td></tr>


Vielleicht ist das logisch auch falsch. :confused:

pogo
21.10.2003, 11:54
Da du zweimal dasselbe ausgeben möchtest, ist es besser die option Tags in einer Variablen zu speichern und die dann auszugeben. Es besteht ja kein Grund, die while Schleife nochmal zu durchlaufen, wenn man es schon einmal getan hat.

Du benutzt dann also nichtecho "<option value='{$komponist['comp_id']}'>{$komponist['comp_name']}, {$komponist['comp_vname']}";sondern$dropoption .= "<option value='{$komponist['comp_id']}'>{$komponist['comp_name']}, {$komponist['comp_vname']}\n";
Ausgegeben wird das dann per echo $dropoption;

daFish
21.10.2003, 12:19
Danke pogo,

habe es gerade probiert und es funktioniert wunderbar, allerdings mit einer Ausnahme (vielleicht hab ich da auch was nicht richtig verstanden):

Ich hab die while-Schleife unterhalb vom Query gesetzt und rufe die Variable wie beschrieben per echo auf.

Ich bekomme allerdings eine Fehlermeldung beim Scriptaufruf:

Notice: Undefined variable: dropoption in /path/to/script/insert.php on line 150

Normal oder Fehler?

Gruss Fish

pogo
21.10.2003, 19:02
Dann füg vor der while Schleife $dropoption= ''; ein

daFish
22.10.2003, 07:42
Vielen Dank pogo. :)