Seite 1 von 2

Kategorie/Foren/Topics/Posttext browsen

Verfasst: 01.03.2006 00:52
von karstenkurt
Hallo,

ich möchte gerne auf einer seperaten php-Seite einen Teil meines Forum anzeigen. Allerdings in genau den Kategorien wie ich sie angelegt habe.
Hab den CH-Mod 2.0.5 installiert und möchte ohne "guten" Grund auch nicht auf eine höhere Version wechseln.

Die Struktur geht teilweise über 4 Ebenen Kategorien und dann in Foren und Topics über.
Bespiel:
1.) Kat1
2. --> Kat1.1
3. --> Kat1.2
4. --> Kat1.2.1
5. --Forum1.2.1.1
6. --> Text
usw.

Nun möchte ich ein Script erstellen, welches mir eine Übersicht über die Kategorien/Foren/Topics/Texte zur Verfügung stellt und zwar immer Ebenenweise. D.h. zeige alle Kategorien der Ebene x, wenn keine Kategorien vorhanden sind, nehme die Foren und und zum Schluss die Topics bzw. die Post-Texte.

Hatte mir das folgendermassen gedacht. Nehme Kategorie 1 (id z.b. 12) als EInstiegspunkt.
Ermittle Anzahl der Unterkategorien mittels

Code: Alles auswählen

$sql='select count(*) as anzahl from ' . CATEGORIES_TABLE. ' where cat_main=12';
Wenn die Anzahl grösser als 0, dann zeige diese Kategorien an. Ermitteln geht mitels

Code: Alles auswählen

$sql = "SELECT cat_id,cat_title,cat_main FROM " . CATEGORIES_TABLE . "
 WHERE `cat_main`=" . $id . " order by cat_title";
Wenn die Anzahl gleich Null, dann nehme die Daten aus der Forums-Tabelle

Code: Alles auswählen

$sql = "SELECT `forum_name`,`forum_id` FROM " . FORUMS_TABLE . "
            WHERE cat_id=" . $id . " order by forum_name";
Normalerweise sollte das rekursive Durchlaufen der Tabellen phpbb_categorie,phpbb_forums, phpbb_topics,phpbb_posts eigentlich nicht so das Problem sein, zumal ich immer nur eine Ebene zur Zeit brauche. Leider komme ich immer wieder an Stellen, wo es nicht so klappt.

Allerdings stell ich mich zu dusselig an. Hab da schon ein wenig rumgespielt, aber irgendwie funktioniert das nicht so richtig. Kennt jemand ein Tutorial, welches das Problem abdeckt oder hat jemand ein fertiges Skript?
Vielleicht kann mir ja der Rabbit helfen.

Verfasst: 01.03.2006 13:17
von Pyramide
Also auf den ersten Blick kann ich da jetzt keine offensichtlichen Fehler erkennen. Vielleicht kannst du ja mal beschreiben was "irgendwie funktioniert das nicht so richtig" heißen soll.

Verfasst: 01.03.2006 16:17
von mgutt

Code: Alles auswählen

cat_main
Ist keine bekannte Spalte?!

Auch sind "cat_id" in CH unwichtig. (Kategorien werden in CH als normalen Foren behandelt). Funktionieren tun sie aber dennoch ;)

Verfasst: 01.03.2006 16:22
von karstenkurt
mgutt hat geschrieben:

Code: Alles auswählen

cat_main
Ist keine bekannte Spalte?!
Bei meinem CH-Mod schon.

Code: Alles auswählen

CREATE TABLE `phpbb_categories` (
  `cat_id` mediumint(8) unsigned NOT NULL auto_increment,
  `cat_title` varchar(100) collate latin1_general_ci default NULL,
  `cat_order` mediumint(8) unsigned NOT NULL default '0',
  `cat_main_type` char(1) collate latin1_general_ci default '',
  `cat_main` mediumint(8) unsigned default '0',
  `cat_desc` text collate latin1_general_ci NOT NULL,
  `icon` varchar(255) collate latin1_general_ci default '',
  PRIMARY KEY  (`cat_id`),
  KEY `cat_order` (`cat_order`)
);
@Pyramide:
Ich werds heute abend nochmal genau durchgehen und dann versuchen in Worte zu kleiden.

Verfasst: 01.03.2006 16:36
von mgutt
Es gibt bei mir nur: (aktuelle CH)

Code: Alles auswählen

cat_id  cat_title  cat_order 
Aber das gleiche wird aktuell erzielt mit "forum_main" aber im Forenbereich (phpbb_forums). Kommt also das gleiche bei raus bzw. die Abfrage ist dann leichter, weil Du alle Foren komplett über einen Query auslesen kannst.

Sonst würde mich auch mal der Fehler interessieren, der gemeldet wird oder wie Dein Code aussieht.

Gruß Marc

Verfasst: 01.03.2006 16:45
von karstenkurt
Hab CH-Mod 2.0.5 (siehe oben). Hast Du mal ein SQL-Statement welches die gewünschten Info aus den Tabellen Categories, forums, topics, posts und post_text abzieht und entsprechend verknüpft. Da haperts im Augenblick ein wenig.

Verfasst: 01.03.2006 16:54
von mgutt
Ich habe bisher leider noch nicht durchgeblickt wie Dein Ergebnis aussehen soll.

Also Du hast eine index mit allen Cats und Foren.

Wenn Du in Cat "- Kat1.2.1 (ID4)" bist also mit:
meinedomain.de/liste.php?id=4

Dann siehst Du im Endeffekt nur:
- Forum1.2.1.1 (ID5)
Wenn Du dann aufrufst:
meinedomain.de/liste.php?id=5

Dann siehst Du eine Liste mit Posts aus diesem Forum mit der ID5 oder?

Bei:
meinedomain.de/liste.php?id=1

siehst du dagegen nur:
- Kat1.1 (ID2)
- Kat1.2 (ID3)
Im Endeffekt hast Du dann doch nur eine Kopie von Deinem Forum, wie es sowieso schon ist oder nicht?

Warum kopierst Du dann nicht einfach die index.php und nutzt ein anderes template?

Verfasst: 01.03.2006 16:58
von karstenkurt
Genau richtig verstanden. Eine Index mit einem anderen template, wäre eine Möglichkeit, abe ich möchte ja nur einen Teilbereich des Forums abbilden. Alles was unterhalb einer vorher definierten Kategorie liegt, also nicht das komplette Forum. Hast Da ne Idee?

Verfasst: 01.03.2006 17:06
von mgutt
Nenn sie z.B. index2.php

Dann kannst Du beispielsweise wenn ID= leer ist (z.B. wenn index2.php direkt aufgerufen wurde), dann soll er ID=12 nehmen.

nach dieser zeile z.b.:

Code: Alles auswählen

$forum_id = _read(POST_FORUM_URL, TYPE_INT);
erweitern mit:

Code: Alles auswählen

$forum_id = empty($forum_id) ? $forum_id = '12' : $forum_id;
Um ein anderes template zu nehmen, habe ich beispielsweise eine neue header klasse angelegt. Dann konnte ich jeweils eine anderen overall_header bzw. footer nehmen.

vielleicht steigst du hier durch:
http://www.phpbb.de/viewtopic.php?t=969 ... der+klasse

Gruß

Verfasst: 01.03.2006 22:29
von karstenkurt
Danke. Werd das morgen mal durchprobieren.