Datensätze nach Kategorie gruppiert anzeigen

ArFiBa

Erfahrenes Mitglied
Hallo Leute,

ich möchte mein Forum so strukturieren, wie es auch auf diese Seite der Fall ist. Hier gibt es ja auf der ersten Seite die Übersicht alle Foren gruppiert nach Intern, Bildbearbeitung usw. Dasselbe möchte ich bei mir auch einbringen. Das scheitert nur an meinen Kenntnissen die leider nicht ganz so weit gehen. Ich habe meiner Tabelle in der MySQL Datenbank bereits eine Spalte für die Kategorie hinzugefügt nur weiß ich jetzt nicht wie ich danach Gruppiere.
Kann ich das mit der Group by Klausel und wenn ja wie oder bin ich in der Richtung ganz falsch?

Thx f h.

ArFiBa
 
Mit Order by sortiert er allerdings nur danach. Ich möchte es aber so haben, dass als Überschrift z.B. Internes steht und darunter alle Foren kommen die in diese Kategorie sind und danach wieder ein eine Kategorie als Überschrift und alle Foren diese Kategorie usw. . So wie es hier auf der ersten Seite des Forums auch ist.
 
Hast Du eine seperate Tabelle mit Kategorien?

Ich hab bei mir eine Tabelle mit Kategorien und eine mit den Posts.
Dabei wird nur dem ersten Post eines Threads die KategorieID gegeben, so kann ich dann mit aehnlichem Code wie folgt die Kategorien und die jeweiligen Threads ausgeben (was ich aber in der Art nicht mache).

PHP:
$categories=mysql_query("select * from categories order by category");
while ($category=mysql_fetch_assoc($categories))
 {
  printf("%s<hr>",$category['category']);
  $threads=mysql_query("select * from posts where category='$category' order by id desc");
  while ($thread=mysql_fetch_assoc($threads))
   {
    printf("%s<br>",$thread['title']);
   }
  printf("<hr>");
 }
 
Hab das ganze jetzt so angepasst das es zu meiner DB passt nur wird lediglich die Kategoriebezeichnung angezeigt. Nicht aber die einzelnen Themen.
PHP:
<?php $categories=mysql_query("select * from for_kategorie");
while ($category=mysql_fetch_assoc($categories))
{
  printf("%s<hr>",$category['for_kategorie_bezeichnung']);
  $threads=mysql_query("select * from for_main where for_kategorie='$category' order by for_id asc");
  while ($thread=mysql_fetch_assoc($threads))
   {
    printf("%s<br>",$thread['for_bezeichnung']);
   }
  printf("<hr>");
}
?>
 
So gehts jetzt. Musste Ihm noch sagen welches Feld er vergleichn soll.

PHP:
<?php $categories=mysql_query("select * from for_kategorie");
while ($category=mysql_fetch_assoc($categories))
{
  printf("%s<hr>",$category['for_kategorie_bezeichnung']);
  $a=$category['for_kategorie_id'];
  $threads=mysql_query("select * from for_main where for_kategorie= '$a' order by for_id asc");
  while ($thread=mysql_fetch_assoc($threads))
   {
    printf("%s<br>",$thread['for_bezeichnung']);
   }
  printf("<hr>");
}
?>
 
Zurück