ERLEDIGT
NEIN
NEIN
ANTWORTEN
21
21
ZUGRIFFE
1364
1364
EMPFEHLEN
-
Ich bin zurzeit daran, ein aufwändiges Linkverwaltungssystem zu entwickeln.
Mein Ziel wäre es, dass man die Links in Kategorien aufteilen kann.
Man sollte aber schlussendlich eine Unterkategorie in der Kategorie erstellen können, und dies soll sich bis ins unendliche wiederholen können.
Habt ihr dazu eine Lösung? Wie mache ich das am besten?
Vielen Dank für eure Hilfe
-
10.02.04 09:40 #2
Für die Kategorieeinteilung würde ich eine Tabelle machen. Du speicherst für jede Kategorie die Id und die ID der Kategorie, die übergeordnet ist. So kannst du beliebig viele Kategorien untereinander verschachteln.
Für alle höchsten Kategorien, also für die, die keine übergeordnete Kategorie haben vergibst du einfach die ID 0.
Mit diesem Prinzip ist es auch recht einfach mal einen ganzen Kategoriebaum zu verschieben. Du brauchst dazu einfach nur die ID ändern.
-
Ok, vielen Dank, ich werde es gleich versuchen.
-
Hm, ich weiss nicht, mir ist das irgendwie zu hoch.. hat jemand ein Beispiel?
Vielleicht hat ja von euch schon jemand sowas gecodet.
-
Ich hab sowas noch nicht geschrieben, aber dies geht sicherlich nur mit der Übergabe von vielen Kategorien: datei.php?hauptkategorie=1&unterkategorie=2&unterunterkategorie=4 usw. du müsstest die IDs per JOIN so verknüpfen das die jeweiligen IDs immer "ineinander greifen". Das ist wirklich ein sehr komplexes System, überlege dir des weiteren ob es Sinn macht unendlich viele Unterkategorien zu erstellen, denn dies fördert nicht unbedingt die Übersichtlichkeit.
cheers,
-
10.02.04 12:10 #6
- Registriert seit
- Aug 2002
- Beiträge
- 419
Also ich hab sowas das man 3 Ebenen machen kann, die Kategorie --> Die Menüpunkte und die Beiträge, zu mehr kam ich bisher nicht

Aber die habe ich dann in den einzelnen Tabellen verlinkt.
Würde mich aber auch mal interessieren wie das geht mit den Unterkategorien weil ich mir das nicht vorstellen kann.
-
10.02.04 12:15 #7
- Registriert seit
- Aug 2002
- Beiträge
- 419
So hab mir mal was überlegt, es müsste nach diesem System gehen:
cat_name | ID | parent_id
------------------------------------
Tester | 1 | 0
Test2 | 2 | 1
So nach dem Motto dürfte es gehen.
Mal sehen ob ich mein CMS nach diesem System umbau, danke für den Denkansatz
EDIT: Shit ich hätte es per EDIT auch editieren können ...
-
10.02.04 12:20 #8Keine Ahnung ob das funktioniert... Ist übrigens eine rekursive Funktion (hab das mit PHP noch nie gemacht, weiss nicht mal ob es mit PHP geht...PHP-Code:
function menu($id) {
$query1 = mysql_query("SELECT * FROM menu WHERE id = $id");
while ($query = mysql_fetch_row($query1)) {
$query3 = mysql_query("SELECT * FROM menu WHERE id = $query['id']");
if (mysql_num_rows($query) > 0) {
menu($query['id']);
}
else{
echo $query['name'];
}
}
}
Sollte aber eigentlich schon...
MfG AqUaSoN!C
o Wie man richtig Fragen stellt o
o Nicht in Problemen sondern in Lösungen denken! o
o Es gibt 2 Dinge, die sind unendlich: das Universum und die menschliche Dummheit. Aber beim Universum bin ich mir noch nicht ganz sicher. o
> Meine Linksammlung > http://linksys.aquasonic.ch
> Mein Wiki > http://wiki.aquasonic.ch
-
10.02.04 12:49 #9
- Registriert seit
- Aug 2002
- Beiträge
- 419
schaut nich schlecht aus.Original geschrieben von aquasonic
Keine Ahnung ob das funktioniert... Ist übrigens eine rekursive Funktion (hab das mit PHP noch nie gemacht, weiss nicht mal ob es mit PHP geht...PHP-Code:function menu($id) {
$query1 = mysql_query("SELECT * FROM menu WHERE id = $id");
while ($query = mysql_fetch_row($query1)) {
$query3 = mysql_query("SELECT * FROM menu WHERE id = $query['id']");
if (mysql_num_rows($query) > 0) {
menu($query['id']);
}
else{
echo $query['name'];
}
}
}
Sollte aber eigentlich schon...
Damit dürfte auch das Problem wie man die Kategorien ausliest gelöst sein.
D.h die Funktion müsste eigentlich alle Kategorien auslesen, also auch die 99 Ebene, können wenn ich mir nicht Irre oder?
Muss mich auch mal mit Rekursiven Funtkionen vertraut machen.
EDIT:
Besser wäre es wohl gewesen, anstatt $query['id'], noch eine Variable $query2['id'] an dieser Position zu machen:
Dann geht er denk ich mal alle Kategorien durch und bleibt nicht an den ersten beiden Ebenen hängenPHP-Code:$query3 = mysql_query("SELECT * FROM menu WHERE parent_id = $query['id']"); // Damit er auch den "Tochterquery" rausliest
while($query4 = mysql_fetch_assoc($query3))
{
if (mysql_num_rows($query4) > 0) {
menu($query4['id']);
}
else{
echo $query['name'];
}
}
Geändert von Muffinmampfer (10.02.04 um 12:57 Uhr)
-
Die Funktion hat aber einen Haken: da sie rekursiv abläuft werden immer wieder neue Queries erzeugt. Je mehr Queries man absetzt, desto langsamer ist das ganze System.
Naja, ich würde dafür ja mal im Forum nach dem Stichwort NestedSet schauen
Damit kann man auch bis ins unendliche Kategorien anlegen und es ist obendrein auch noch effizient. Mit der Klasse CB_NestedSet und der darin enthaltenen Methode getBranch() bekommt man alle nachfolgenden Rubriken einer bestimmten Rubrik mit nur einem Query.
Ciao, JörgVisit: Content*Builder.de - a very flexible CMS
-
10.02.04 13:29 #11
- Registriert seit
- Aug 2002
- Beiträge
- 419
Original geschrieben von F.o.G.
Die Funktion hat aber einen Haken: da sie rekursiv abläuft werden immer wieder neue Queries erzeugt. Je mehr Queries man absetzt, desto langsamer ist das ganze System.
Naja, ich würde dafür ja mal im Forum nach dem Stichwort NestedSet schauen
Damit kann man auch bis ins unendliche Kategorien anlegen und es ist obendrein auch noch effizient. Mit der Klasse CB_NestedSet und der darin enthaltenen Methode getBranch() bekommt man alle nachfolgenden Rubriken einer bestimmten Rubrik mit nur einem Query.
Ciao, Jörg
Naja ich sachs ma so, ich will meine Scripts nicht irgendwem nachkauen sonder sie möglichst selber machen
.
Aber ich werd mal gucken, vielleicht gibts ja noch was gutes für mein CMS in der Version 0.63
-
10.02.04 14:17 #12
Wenn man eine Oracle-Datenbank verwendet, kann man sogenannte "Hierachische SQL-Abfragen" verwenden. Damit kann man sich mit nur EINEM SQL-Statement einen ganzen Baum ausgeben lassen. Bei MySQL soll dieses Feature noch folgen.
snuuDas Leben ist wie eine Ketchupflasche - erst kommt nichts und dann alles auf einmal.
www.sven-petruschke.de
-
10.02.04 14:27 #13
Nested Sets ist ein sehr gutes Stichwort. Rekursive Abfragen sollte man wirklich vermeiden.
~WonGak~
"And if there is a god, I know he likes to rock."
-
10.02.04 14:41 #14
Diesen Beitrag bitte löschen. Habe keine Lust mich mit kleinen Kindern zu streiten. Danke.
Geändert von Sven Petruschke (11.02.04 um 00:14 Uhr)
Das Leben ist wie eine Ketchupflasche - erst kommt nichts und dann alles auf einmal.
www.sven-petruschke.de
-
10.02.04 14:53 #15
Mehr Infos gibts übrigens hier http://www.tutorials.de/tutorials139220.html
MfG AqUaSoN!C
o Wie man richtig Fragen stellt o
o Nicht in Problemen sondern in Lösungen denken! o
o Es gibt 2 Dinge, die sind unendlich: das Universum und die menschliche Dummheit. Aber beim Universum bin ich mir noch nicht ganz sicher. o
> Meine Linksammlung > http://linksys.aquasonic.ch
> Mein Wiki > http://wiki.aquasonic.ch
Ähnliche Themen
-
Kategorien per Dropdownmenü
Von anopheles1337 im Forum PHPAntworten: 6Letzter Beitrag: 01.03.06, 00:34 -
Kategorien
Von asdfg im Forum PHPAntworten: 9Letzter Beitrag: 05.02.06, 23:56 -
Kategorien
Von qsrs im Forum PHPAntworten: 7Letzter Beitrag: 26.02.05, 00:26 -
Kategorien...
Von zinion im Forum PHPAntworten: 7Letzter Beitrag: 08.10.04, 12:37 -
Kategorien Bild
Von law im Forum PHPAntworten: 3Letzter Beitrag: 30.06.03, 20:49





Zitieren
Login






[PHP][Snippet] Array zu XML konvertieren