Großes Problem: Links zählen! Brauche Hilfe!

PHPer

Erfahrenes Mitglied
Hey Leute!

Ich habe mir ein kleines Link Directory Script geschrieben. Das hat dementsprechend auch Sub Kategorien auf unendlich vielen Ebenen. Funktioniert soweit ganz gut, nur stehe ich vor einem Problem, wo mir einfach nicht die Lösung einfallen will:

Ich möchte die Links die sich in einer Kategorie befinden zsuammenzählen und anzeigen lassen. Dabei sollen auch die Sub Kategorien einbezogen werden. Sprich wenn in einer Kategorie 4 Links sind und in einer Sub Kategorie 5, so soll bei der Kategorie halt 9 Links angezeigt werden.

Funktionieren tut mein Script folgendermaßen:

Ich habe eine Tabelle für Kategorien & Subkategorien:

KatID | KatSub | ...

KatID ist die ID der Kategorie, KatSub gibt an in welcher Kategorie diese als Sub Kategorie Definiert ist (bei 0 auf Start Seite, ansonnsten steht hier halt ne KatID drin).

Dann habe ich die Links Tabelle:

LinkID ...

Hier werden die Link Daten eingetragen

Dann kommt eine weitere Link Tabelle hinzu, die angibt, in welcher Kategorie der Link angezeigt werden soll. So sind halt Eintragungen in mehrere Kategorien möglich:

LinkID | CatID

LinkID ist hierbei die ID des Links, um welchen es sich handelt. CatID ist die ID der Kategorie in der der besagte Link angezeigt werden soll.

Soll Link 3 also in der Kategorie 5 stehen wäre LinkID 3 und CatID 5.

Sagen wir mal jetzt ich hab Folgende Kategorien mit Links:

Kat 1 (0 Links)
- Subcat 1 (1 Links)
.. Link
-- Subsubcat (2 Links)
.. Link
- Subcat 2 (0 Links)
-- Subsubcat (1 Link)
.. Link 1
.. Link 2

Müsste das bei der Darstellung volgendermaßen aussehen:

Kat 1 (4 Links)
- Subcat 1 (3 Links)
. Link
-- Subsubcat (2 Links)
.. Link
- Subcat 2 (1 Link)
-- Subsubcat (1 Link)
.. Link 1
.. Link 2

Die Frage ist halt jetzt, wie zähl ich die ganze Links inkl. Unterkategorien zusammen so dass bei Kat angezeigt wird dass diese 4 Links enthält? (hoffe ich hab mich verständlich ausgedrückt :-))

Hat jemand mal nen guten Tip für mich?
 
Schreib dir einfach eine rekursive Schleife, welche von der gegebenen Kategorie zur tiefsten Ebene geht und dabei stets die sub-ids in einen Array schreibt und dieses dann immer nach und nach abarbeitet!

Oder du musst halt beim anlagen der Kategorien und löschen in einer zusätzlichen Spalte stets einen Wert aktualisieren, welcher dir ausgibt wie viele Subkategorien es gibt! Spart zumindest einen Haufen abfragen!
 
Beachte aber: dein Script wird bei steigender Anzahl von Links irgendwann extrem langsam werden mit deiner aktuellen Tabellenstruktur und dem rekursiven Auslesen.
Zu empfehlen wäre hier vielleicht Nested Sets.
 
Zurück