ERLEDIGT
NEIN
NEIN
ANTWORTEN
3
3
ZUGRIFFE
679
679
EMPFEHLEN
-
Hallo!
Angenommen ich hab folgende Datenbankstruktur
table_hauptkagegorie
ID | name
table_unterkategorie1
ID | ID_hauptkategorie | name
table_unterkategorie2
ID | ID_unterkategorie1 | name
Wenn hinter dieser Struktur nun ein Menü steckt, welches aus 3 Ebenen besteht, wobei in der Tabelle Unterkategorien2 die 3 Ebene liegt, die einer Unterkategorie1 zugeordnet ist, welcher wiederrum unter einer Hauptkategorie zu finden ist, wie kann ich dann ein auslesen der Art realisieren, das ich ein Array (für PHP) erhalte, das mir gleich die korrekte Reihen folge darstellt.
sinngemäß müsste der Syntax ja so aussehen: "SELECT * FROM table_hauptkategorie, table_unterkategorie1, table_unterkategorie2" um erstmal das komplette menü auszulesen.
Nun ein Beispiel für ein sinnfreies Menü:
Filme
__Action
____unter 90 minuten
____ueber 90 Minuten
__Komödien
____schwarzer Humor
____vor 2005
____nach 2005
__Tragik
____Herzschmerz
____Krieg
Bücher
__Romane
____Liebe
____Action
__Sachbücher
____PHP
____MYSQL
____C++
die Entsprechende Tabelle würde ja so aussehn
table_Hauptkategorien
1 | Filme
2 | Bücher
table_Unterkategorie1
1 | 1 | Action
2 | 1 | Komödien
3 | 1 | Tragik
4 | 2 | Romane
5 | 2 | Sachbücher
table_Unterkategorie2
1 | 1 | Unter 90 Minuten
2 | 1 | Über 90 Minuten
.... (ich denk nicht, das ich jetzt weiter fortfahren muss, ihr wisst ja was ich meine
)
Ich hätte jetzt gerne ein Array in folgender Form (ich zähle es auf, wie man es in PHP statisch definieren würde). es soll aber dynamisch an Hand der Tabelle entstehen, aber gerade das ist ja mein Problem
0 => "Filme",
1 => "Action",
2 => "unter 90 Minuten",
3 => "über 90 Minuten",
4 => "Komödien",
5 => "schwarzer Humor",
6 => "vor 2005",
7 => "nach 2005",
...
18 => "MYSQL"
19 => "C++"
Wie regle ich das? Sicherlich könnte ich das über einige PHP Operation auch organisieren, aber damit mache ich das Skript zu langsam, ich hätte gern ein komplettes ergebnis von der Datenbank geliefert, damit bleibt das Skript performanter
.
Falls ich mich irre, dann berichtigt mich.
Bisher habe ich diesbezüglich noch keine Zeile programmiert, ich überlege mir gerne vorher wie ich etwas realisiere, bevor ich stundenlang rumprobiere.
MfG
Milleman wird erwachsen ....
-
Ich würde deine vorgeschlagene Lösung mal in Frage Stellen.
1. Was passiert wenn du noch eine weitere unterkategorie hast? Legst du dann noch eine Tabelle an?
2. Du möchtest ein Array in der Form
0 => "Filme",
1 => "Action",
2 => "unter 90 Minuten",
3 => "über 90 Minuten",
4 => "Komödien",
5 => "schwarzer Humor",
6 => "vor 2005",
7 => "nach 2005",
...
18 => "MYSQL"
19 => "C++"
Woran erkennst du wenn sich eine Kategorie verändert? Woher weisst du, dass 2+3 zur Oberkategorie 1 gehören und nicht zur Oberkategorie 0. Das ist aus dem Array nicht erkennbar.
Würde dir empfehlen nur eine Tabelle anzulegen und zwar in der form
id name parent_id
1 Filme
2 Action 1
3 über 90 2
4 unter 90 2
...
So könntest du beliebig viele Kategorien verwalten. Welche RDBMS setzt du denn ein? Unter Oracle kannst du sowas wunderbar mit connect by prior lösen. Unter MySql wirst du dir anders helfen müssen
Nur mal ne Anregung, da du ja eh noch keinen Code geschrieben hast.Geändert von z-coupe (27.07.06 um 14:58 Uhr)
-
Deine Idee is gut.
Nun gut, dann mal kurz ein wenig mehr infos zu meiner Grobplanung.
Das menü hat maximal 3 ebenen. Jede weitere Ebene hat in der Darstellung auf der Webseite spezielle eigenschaften, daher muss ich wissen aus welcher Ebene ein Menüpunkt stammt - daher auch die 3 Tabellen. In einer Tabelle würde das schwerer zu machen sein. Oder?
Ich nutze MYSQL, da mein Webspace nur sql unterstützt und ich momentan auch nur mit sql umgehen kann. Oracle lerne ich erst im kommenden Semester
. Mein Projekt muss aber vorher fertig werden.
In dem Array erkennt man die ebene im übrigen daran, dass ich nich einfach Strings haben möchte, sondern ein 2 Dimensionales array. Das habe ich schon bedacht. Die infos gehen aber über das eigentliche Problem hinaus, weshalb ich es auf ein eindimensionalesArray beschränkt habe.man wird erwachsen ....
-
Ich hab grad noch mal drüber nachgedacht.
Ich würde diene Idee abändern zu
ID | name | parent_ID | ebene
1 | filme | NULL | 1
2 | action | 1 | 2
....
Dann hab ich das Problem nicht und das sortieren kann ich ja über ID und Ebene realisieren?Geändert von mille (27.07.06 um 15:19 Uhr)
man wird erwachsen ....
Ähnliche Themen
-
SELECT über mehrere Tabellen sortieren
Von DiDiJo im Forum Relationale DatenbanksystemeAntworten: 3Letzter Beitrag: 17.02.09, 17:19 -
Mehrere Tabellen auslesen
Von mkoeni1 im Forum Relationale DatenbanksystemeAntworten: 1Letzter Beitrag: 04.10.07, 22:23 -
MySQL: Mehrere Tabellen auslesen und Ergebnis auswerten
Von tuFrogs im Forum Relationale DatenbanksystemeAntworten: 8Letzter Beitrag: 13.09.07, 15:24 -
[MySQL] Zwei Tabellen abfragen und Ergebnis sortieren
Von DJLopez im Forum Relationale DatenbanksystemeAntworten: 3Letzter Beitrag: 01.07.07, 23:49 -
mehrere spl tabellen inhalte sortieren
Von deep_popel im Forum PHPAntworten: 3Letzter Beitrag: 05.11.03, 09:32





Zitieren
Login





