• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Dynamisches Dropdown Menü

kRuzeFiX

Neues Mitglied
Hallo,
ich habe ein weiteres Problem, und zwar handelt es sich diesmal um zwei Datenbanken. Die erste beinhaltet Inventargegenstände welche in einem Raum stehen. Dies definiert dann auch gleich die zweite Datenbank (Raumname, Abteilung, Stockwerk).

Nun soll über ein Formular neue Inventargegenstände & Räume (Datensätze) zu den jeweiligen Datenbänken hinzugefügt werden. Der Clou, bzw eher das Problem an dem ganzen ist, wie schaffe ich es, dass ich beim Hinzufügen von Inventardatensätzen aus einem dynamisch gefülltem Dropdown Menü einen Raum aussuchen kann (welche natürlich per PHP aus der MySQL Datenbank ausgelesen werden) und diesen dann samt den neu eingegebenen Daten abschicken/speichern kann?

Aus einem anderem Thread bin ich soweit gekommen, aber irgendwie klappt es nicht. Kann es daran liegen, dass bei mir "Raumname" als Primärschlüssel definiert ist und ich keine ID Spalte habe?

$select = "SELECT * FROM raeume WHERE Raumname = $_POST[raum]";
$query = mysql_query($select);
while ($ds = mysql_fetch_object($query)) {
$id = $ds -> id;
$name = $ds -> name;

if($id == $_POST[raumname]){$tmp = 'selected';};
echo "<option $tmp value=\"".$id."\">".$name."</option>";

Danke,
kRuzeFiX
 
Werbung:
Was funktioniert denn nicht, was passiert? Ist das der gesamte Code? Sollte dem so sein fehlt bspw. das Schließen der Whileschleife, PHP-Tags im Forum erleichtern das Lesen.
Grundsätzlich funktioniert dein Vorhaben schon über den Ansatz
PHP:
while($ds = mysql_fetch_object($query)):
echo "<option value=\"" . $ds->id . "\"";
if ($ds->id == $whatever):
echo "selected=\"selected\""; // Wenn nicht XHTML reicht glaub ich auch selected, finde es so nur "ansprechender"
endif;
echo ">" . $ds->name . "</option>";
endwhile;

So wird die gesamte Liste an Möglichkeiten ausgegeben und das ausgewählt, was gleich der id ist, was irgendwo aus der $_POST-Variablen kommt.
 
Hallo,

geh doch Stück für Stück vor. Lass dir doch erst mal anzeigen was dir da als Parameter $_POST[raum] übergeben wurde, vielleicht kommst du ja selbst dahinter.
Es ist nicht nur ratsam, sondern zwingend erforderlich übergebene Parameter eines Formulars nicht ungeprüft zu übernehmen, sondern erst mal einer Inhaltsprüfung, am besten anhand einer Whitelist zu unterziehen. Wenn du das nicht machst öffnest du Hacker eine Tür und sagst noch dazu:" bitte bedient euch."


  • Fange Fehler auf und zeige sie vernünftig an.
  • Bei einem SQL-Statement niemals mit * alles auswählen, sondern die Felder, die du brauchst, auch wenn es alle Felder sind, explizit aufführen. Also nicht SELECT * FROM sondern SELECT Feld1, Feld2, Feld3 FROM
  • Längere SQL-Statements auf mehrere Zeilen aufteilen, dadurch wird die Fehlersuche erleichtert, in dem du dem Parser die Möglichkeit gibst die entsprechende Zeilennummer innerhalb des Statements anzuzeigen.
  • Arbeite mit Einrückungen und Leerzeichen, das erleichtert dir und andere die Lesbarkeit.
Das sind alles Grundsätzliche Dinge, ohne die man eigentlich gar nicht anfangen sollte zu programmieren.
 
Werbung:
Mal abgesehen davon, dass der select-tag im Dropdown fehlt was sagt den ein print_r($_POST);
 
Danke euch allen! Konnte mir dadurch wieder eine neue/einfachere Lösung herarbeiten.

PHP:
<select name="standort" value="">
<?php
mysql_connect...

$sql = "SELECT raumname FROM raeume";
$ergebnis = mysql_query($sql);

echo "<h5>";

while ($zeile = mysql_fetch_row($ergebnis))
    {
    echo "<option value=\"";
    echo $zeile[0];
    echo "\">";
    echo $zeile[0];
    echo"</option>";
    }

echo "</h5>";

?>
</select>

Es funktioniert soweit! Habt ihr trotzdem noch Tips oä.? Grüße und nochmals Danke.
 
Warum packst du die Option-Tags aus dem Select denn zwischen eine Überschrift, das ist so nicht korrekt. Wenn du das Aussehen des Auswahlmenüs geändert haben willst, kannst du auch dafür CSS einsetzen.
 
Werbung:
Zurück
Oben