schwierige Sortierung aus DB

Gray

Erfahrenes Mitglied
Erstmal die DB die ich habe:

konf_id typ feld artikel preis aktiv
1 webspace 1 MB Webspace 0.50 1
3 db MySQL Datenbank 2.00 1
4 mail select 10 Mail Accounts 1.00 1
5 mail select 20 E-Mail Accounts 2.00 1
6 mail select 30 E-Mail Accounts 3.00 1
7 traffic select 100 MB 0.30 1
8 traffic select 500 MB 1.40 1
9 traffic select 1000 2.70 1
10 traffic select 2000 5.20 1


nun will ich folgendes, es soll mir alle zusamengehörigen Artikel (siehe typ) in einem Select Feld anzeigen (wenn 'feld' select enhält) alle anderen sollen ganz normale input felder sein, allerdings muss es pro typ ein Selectfeld kreieren, und die gesamte DB muss ausbaufähig bleiben , also wenn ich noch andere typen einfüge, so müssen diese auch jeweils in einem Select Feld angezeigt werden.
Das Select Feld selbst soll jeweils den Namen des Typs haben.
 
Ich würde wie folgt ran gehen
(grundsätzlich würde ich die einzelnen Typen in verschiedenen Tabellen ablegen, aber probieren wir das mal so)

- Die Bezeichnung des Typs in eine eigene Tabelle UND ein neues Feld "Reihenfolge"
da wir ja die Ausgabe in einer genauen Reihenfolge wollen.
Also etwa so: typ_id - Bezeichnung - Reihenfolge

- Kleines Skript erstellen, dass mir beim erstellen/löschen eines neuen Typs darauf achtet (sich drum kümmert) dass die Reihenfolge fortlaufend ist.

- In deiner Haupttabelle typ durch typ_id ersetzen

Fertig !

Abfrage und Seitenaufbau

1. Lese die Typ_DB ein (select *) in der Reihenfolge (order by 'reihenfolge')
2. Zähle alle Datensätze ODER Abfrage höchste Reihenfolgennummer
3. Erste / nächste typ_id ($typid) und Bezeichnung ($bezeich) auslesen / fetchen
4. Lese DB ein (select *) in denen die typ_id x ist (where typ = '".$typid."')
5. Erstelle Ausgabe
6. Gehe solange wieder zu Punkt 3 bis die höchste Reihenfolgennummer erreicht ist.

Viel Spass beim basteln.


Wie gesagt, ich halte von der Methode alles in eine DB zu klatschen nicht viel, weil du ja nicht alle Select-Felder nacheinander haben willst, sondern bestimmt noch ein bisschen Text drum rum.

Nachtrag:

Bei der Ausgabe musst du dann noch folgendes reinmachen bevo du die einzelnen Selectreihen aufbaust:
echo '<p><select size="1" name="'.$bezeich.'">';
 
Zuletzt bearbeitet:
Zurück