Seite 1 von 1

Kategorie System erstellen

Verfasst: 13.04.2014 18:33
von BrainAK
Hallo,

da ich nicht viel von Wordpress halte und mir bei den vorhandenen Mods viele Dinge fehlen, habe ich mich vor langer Zeit dazu entschlossen ein eigenes Newssystem zu schreiben. Mit einer Halbfertiges Kategorie Ansicht habe ich in den letzten Wochen alles fertig stellen können, es fehlt lediglich nur noch das Kategoriesystem wobei ich Hilfe benötige.

Ich habe mir dies im phpBB selber angesehen wie das dort gelöst ist, blicke da aber nicht ganz durch.

Ich habe 2 Kategorien und 2 subkategorien. Diese sollten auch so aufgelistet werden

CAT 1
--- SUB
--- SUB
CAT 2
---SUB
---SUB

Das Problem an der Sache ist das er mir nur die erste Kategorie samt Subcats ausgibt. Die 2 Kategorie oder mehr werden erst gar nicht eingeblendet

Code: Alles auswählen

/*
       * Kattegorie auslesen.
       * cat = 1 Kategorie
       * cat = 0 subcat
       * CAT, spalte cat_id enthällt die id derHauptkategoriekategorie zum zuweisen
       */
 $sql = 'SELECT    * FROM ' . NEWS . ' WHERE cat = 1';
      $result = $db->sql_query($sql);
      while ($row = $db->sql_fetchrow($result)) {
         
         $template->assign_block_vars('cat', array(
             'NAME' => $row['name'],
         ));

         $sql = 'SELECT    * FROM ' . NEWS . ' WHERE cat = 0 AND cat_id = ' . $row['cat_id'];
         $result = $db->sql_query($sql);
         while ($topic = $db->sql_fetchrow($result)) {
            
            $template->assign_block_vars('cat.cat_value', array(
                'NAME' => $topic['name'],
            ));
         }
         $db->sql_freeresult($result);
         
      }
      $db->sql_freeresult($result); 

Code: Alles auswählen

<!-- BEGIN cat -->
{forum_cat.NAME}
<!-- BEGINcat_value -->
{forum_value.NAME}<br>
<!-- END cat_value -->
<!-- ENDcat -->

Re: Kategorie System erstellen

Verfasst: 13.04.2014 18:52
von Miriam
Du hast auch die Kategorie 1 in der SQL Query als Vorgabe gewählt. Wie sollen denn dann weitere Kategorien ausgegeben werden?

Re: Kategorie System erstellen

Verfasst: 13.04.2014 18:58
von BrainAK
$sql = 'SELECT * FROM ' . NEWS . ' WHERE cat = 1';

diese meinst du?
Dies ist keine ID sondern nur ein Eintrag das dies eine Hauptkategorie ist.
cat = 1 Hauptkategorie ( davon existieren 2 einträge)
cat = 0 Subcat ( davon 4)

1 SQL Frage Hauptkategorien (cat =1)
die 2 SQL Abfrage innderhalb der while dient für das Abfragen der Subcats (cat = 0)
Splate cat_id in der 2 SQL Abfrage enthällt die id der Hauptkategorie damit man weiss das diese Subcat zu dieser hauptcat gehört

Re: Kategorie System erstellen

Verfasst: 13.04.2014 21:30
von Miriam
Werf doch mal einen Blick auf die function display_forums() in der Datei includes\functions_display.php.

Re: Kategorie System erstellen

Verfasst: 13.04.2014 21:36
von BrainAK
BrainAK hat geschrieben:
Ich habe mir dies im phpBB selber angesehen wie das dort gelöst ist, blicke da aber nicht ganz durch.
Ich glaube man liest meine Beiträg enicht ganz durch :-?

Re: Kategorie System erstellen

Verfasst: 13.04.2014 21:53
von Miriam
Also ich konnte aus dem zitierten Beitrag nicht herauslesen, wo Du genau nachgeschaut hast.

Na gut, kommen wir also zu Deinem Code:

Code: Alles auswählen

         $db->sql_freeresult($result);
         
      }
      $db->sql_freeresult($result);  
ist kontraproduktiv, da nach dem Durchlauf der "inneren" WHILE Schleife nicht nur die Ressource der "inneren" SQL Abfrage, sondern auch noch gleich die der darüber liegenden SQL Abfrage freigegeben wird.
Somit ist nach dem ersten Durchlauf der inneren WHILE Schleife Schluß.

Re: Kategorie System erstellen

Verfasst: 13.04.2014 23:09
von BrainAK
Ok, ich habe diese jetzt einzeln und auch beide einmal entfernt, leider bleibt das Ergebnis gleich. Er gibt nur die erste Newskategorie mit den zugehörigen Subcats aus, andere Kategorien werden nicht angezeigt.

EDIT: Danke, dein Hinweis brachte mich dazu die 2 SQL Abfrage etwas abzuändern.


$sqli = 'SELECT * FROM ' . FORUM . ' WHERE cat = 0 AND cat_id = ' . $row['forum_id'];
$resulti = $db->sql_query($sqli);
while ($topic = $db->sql_fetchrow($resulti)) {

Re: Kategorie System erstellen

Verfasst: 14.04.2014 13:02
von Miriam
Genau das war die Lösung: Umbenennen der Variablen 8)