Frank Lewandowski: MySQL: Kategorie "gruppieren"

Hallo zusammen,

habe mir eine kleine Linkliste auf meiner Seite eingerichtet. Jedoch kann ich nach meinen Kategorien nicht "gruppieren". Somit werden die Kategorien immer mehrfach ausgegeben.

Habe es schon mit Group By und Distinct versucht, jedoch ohne erfolgreiches Ergebnis.

Könnt ihr mir evtl. weiterhelfen!?

Anbei mein Quelltext:

<? include("include/header.inc.php"); ?>

<!-- Beginn Content -->
<div id="content">
<?php
 $tabelle ="links";
 $db = @mysql_connect ($host, $user, $password);
 $res = mysql_db_query("$dbname",  "SELECT ID, Linktitel, URL, Beschreibung, Kategorie FROM $tabelle ORDER BY Kategorie");
  while($row = mysql_fetch_array($res))
   {
   echo "<p><h2>{$row['Kategorie']}</h2></p>";
   echo "<p><a href="{$row['URL']}" target="_blank">{$row['Linktitel']}</a></p>";
   echo "<p>{$row['Beschreibung']}</p>";
   }

mysql_close($db);

?>
</div>
<!-- Ende Content -->

<? include("include/footer.inc.php"); ?>

Vielen Dank
Gruß Franky

  1. Huhu Franky

    Du könntest z.B. eine temporäre Variable zum "merken" der vorherigen Kategorie verwenden.
    Dann prüfst Du ob sich etwas verändert und nur dann gibts Du eine entsprechende Überschrift aus.

    Ungefähr so

    $CurrentCategory = false;

    while ($row = mysql_fetch_assoc($r)){

    if ($CurrentCategory != $row['cat']) {
     $CurrentCategory = $row['cat'];
     printf ('<h1>%s</h1>', $CurrentCategory);

    }

    // hier einzelnen Eintrag ausgeben
    [...]

    }

    oder Du sammelst erstmal alle Einträge in einem Array

    $stack = array();
    while ($row = mysql_fetch_assoc($r)){

    if (!isset($stack[$row['cat']])){
     $stack[$row['cat']] = array();
    }
     $stack[$row['cat']][] = $row;

    }

    Und arbeitest das dann in einer weiteren Schleife ab

    foreach ($stack as $k => $v){
     // Kategorie
     print $k;

    // Schleife über alle Einträge
     foreach ($v as $row){

    // Daten ausgeben
       print "irgendwie";
     }
    }

    Viele Grüße

    lulu

    --
    bythewaythewebsuxgoofflineandenjoytheday