MySQL: Kategorie "gruppieren"
Frank Lewandowski
- datenbank
0 lulu
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
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