Hi,
ich bin im Moment dabei eine Adressdatenbank umzubauen und muss dort zusätzliche Felder einbauen. Ich habe in der bestehenden Datenbank bereits ein Feld für das Geschlecht eingetragen und auch in jedem einzelnen Datensatz (sind bisher nur 5 Testdatensätze) richtig gesetzt.
Nun möchte ich aber, dass man das Gechlecht auch beim eintragen eines neuen Datensatzes über das Web-Frontend setzen kann. Dafür möchte ich ein Dropdown-Menü haben.
Das Dropdown-Menü soll folgende Einträge beinhalten:
""
"Männlich"
"Weiblich"
(Also einen leeren Eintrag für "nicht gesetzt")
In der Datenbank sollen diese Einträge als "m", "f" oder eben leer gespeichert werden.
Das bedeutet es muss (da die gleiche Seite wie zum Eintragen auch zum Editieren von Datensätzen verwendet wird) als erstes ausgelesen Werden was in dem entsprechenden Datensatz drinsteht und der entsprechend übersetzt Eintrag (m=>Männlich, f=>Weiblich) im Dropdown-Menü ausgewählt werden. Wenn es ein neuer Datensatz ist oder das Feld leer ist soll entsprechend der Standardeintrag "" gewählt werden.
Beim absenden des Formulars soll ensprechend die Auswahl des Dropdown-Menü "zurückübersetzt" (Männlich=>m, Weiblich=>f) und eingetragen werden.
Nun habe ich sowas noch nie gemacht (also ein Dropdown-Menü mit variablem Datensatz dahinter) und bräuchte mal ein paar Ratschläge wie ich das am besten angehe.
Viele Grüße,
skaven
Seite 1 von 1
[php & Mysql] Dropdown-menü Mit Festgelegten Werten Aus Datenbank?
Anzeige
#2
geschrieben 09. Februar 2009 - 15:37
Hier eine von vielen eleganten Möglichkeiten:
Beim Erstellen des Dropdownmenüs gibst du ihm eine Liste der Einträge und den zu setzenden Eintrag:
Beim Eintragen eines neuen Datensatzes ist wert "" und beim Bearbeiten bpsw "m"
HTML-Seitig würde die Ausgabe dann wie folgt aussehen.
Beim Neuanlegen:
Beim Editieren:
Für das Mapping (von m wird Männlich) hast du nun verschiedene Möglichkeiten.
Ich erkläre das mal an Hand der Lokalisierungsfunktion eines Web-Frameworks mit dem ich aktuell arbeite. Das arbeitet mit Sprachdateien, für jede Sprache _kann_ es eine eigene Datei geben. index_en.conf, index_de.conf, index_fr.conf usw.. Kann, da mit index.conf ein Fallback existiert. Die Dateien sind dann simple Key-Value Dateien:
index.conf (Standardmäßig deutsch)
index_en.conf
Nun kannst du dir eine einfache Methode striken, die dir an Hand des Keys (m) den Value (männlich) zurückgibt, welchen du dann in dein Template (oder wie auch immer du deinen HTML-Code erstellst) einsetzt.
Die Arbeit mit Dateien ist natürlich eine von vielen Arten ein elegantes Mapping umzusetzen.
Falls dir das viel zu aufwendig ist, kannst du die unelegantere Art wählen und das Mapping direkt im Code bspw über eine Map (in PHP ein einfaches Array) lösen.
Beim Erstellen des Dropdownmenüs gibst du ihm eine Liste der Einträge und den zu setzenden Eintrag:
new DropDown(wert, listeVonEinträgen);
Beim Eintragen eines neuen Datensatzes ist wert "" und beim Bearbeiten bpsw "m"
HTML-Seitig würde die Ausgabe dann wie folgt aussehen.
Beim Neuanlegen:
<select name="sex"> <option selected="selected" value="">Bitte auswählen</option> <option value="m">Männlich</option> <option value="w">Weiblich</option> </select>
Beim Editieren:
<select name="sex"> <option value="m">Männlich</option> <option selected="selected" value="w">Weiblich</option> </select>
Für das Mapping (von m wird Männlich) hast du nun verschiedene Möglichkeiten.
Ich erkläre das mal an Hand der Lokalisierungsfunktion eines Web-Frameworks mit dem ich aktuell arbeite. Das arbeitet mit Sprachdateien, für jede Sprache _kann_ es eine eigene Datei geben. index_en.conf, index_de.conf, index_fr.conf usw.. Kann, da mit index.conf ein Fallback existiert. Die Dateien sind dann simple Key-Value Dateien:
index.conf (Standardmäßig deutsch)
m = Männlich w = Weiblich
index_en.conf
m = Male w = Female
Nun kannst du dir eine einfache Methode striken, die dir an Hand des Keys (m) den Value (männlich) zurückgibt, welchen du dann in dein Template (oder wie auch immer du deinen HTML-Code erstellst) einsetzt.
Die Arbeit mit Dateien ist natürlich eine von vielen Arten ein elegantes Mapping umzusetzen.
Falls dir das viel zu aufwendig ist, kannst du die unelegantere Art wählen und das Mapping direkt im Code bspw über eine Map (in PHP ein einfaches Array) lösen.
#3
geschrieben 09. Februar 2009 - 16:12
Hm, ja stimmt. Sprachdateien habe ich da auch bei und da habe ich sogar ein Array dafür eingetragen, fällt mir grad' ein. Ich werde das morgen mal probieren. Danke erstmal.
- ← Batch Datei Für Media Center
- Skript/Web-Programmierung
- Javascript Zwei Functions In Externer Datei →
Thema verteilen:
Seite 1 von 1