Home | Registrieren | Einloggen | Suchen | Aktuelles


Forum » PHP & MySQL » Kategorie "gruppieren" Antworten
Kategorie "gruppieren"

tron187
Pixelschubser


Beiträge: 3


Hallo zusammen,

habe folgendes Problem:

Möchte gerne eine kleine Linkliste mit MySQL erstellen. Jedoch "gruppiert" er mir die Kategorien nicht. Somit werden bei den Links die der gleichen Kategorie zugeordnet sind, auch immer wieder die Kategorie angezeigt.

Könnt ihr mir evtl. weiterhelfen?!
Anbei mein Quelltext:

1: 
2: 
3: 
4: 
5: 
6: 
7: 
8: 
9: 
10: 
11: 
12: 
13: 
14: 
15: 
16: 
17: 
18: 
19: 
20: 
21: 
22:
<? 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 Kategorie, COUNT (*) as cat_links FROM `$tabelle` GROUP BY Kategorie 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"); ?>


Gruß tron

  Profil   E-Mail   Website   Editieren   Zitieren

HoRnominatoR
Mausakrobat


Beiträge: 165


hast du GROUP BY und ORDER mal umgedreht?

---
get OPERA for free

  Profil   E-Mail   Website   Editieren   Zitieren

subjective
Forenheld


Beiträge: 848


Hornominator: ORDER BY steht immer am Ende - da man erst das Ergebnis (also nach dem Gruppieren sortiert).

tron187: Ich verstehe dein Problem nicht ganz du holst die Kategorien und die Anhazhl der Links darin. Du gruppierst also die Links - nicht die Kategorien. Das sieht eignetlich auch recht sinnvoll aus.

Danach gibst du jedoch URL, LinkTitel und Beschreibung aus - diese Daten kommen in dem SQL-Query gar nicht vor.

---
Weaverslave

  Profil   Website   Editieren   Zitieren

tron187
Pixelschubser


Beiträge: 3


Hi,

ich hatte mein Testscript gepostet. Genau das ist mein Problem, ich möchte ja nicht die Anzahl der Links haben, sondern ich möchte die Links, Beschreibung ausgeben. Diese sollen dann unter der Kategorie stehen.

Dies ist was ich möchte:

KATEGORIE ALLGEMEIN
Link1 / Beschreibung
Link2 / BEschreibung

und ich erhalte


KATEGORIE ALLGEMEIN
Link1 / Beschreibung
KATEGORIE ALLGEMEIN
Link2 / Beschreibung

Die KATEGORIE ALLGEMEIN soll jedoch nur einmal auftauchen, sonst wird es ja zu unübersichtlich...

Hier mal der Link zu meiner Seite
http://franky.homeip.net/links.php

Gruß Franky

  Profil   E-Mail   Website   Editieren   Zitieren

HoRnominatoR
Mausakrobat


Beiträge: 165


aso. mk, dachte die wuerden sich vielleicht irgendwie ueberschreiben.

---
get OPERA for free

  Profil   E-Mail   Website   Editieren   Zitieren

subjective
Forenheld


Beiträge: 848


Das funktioniert allerdings konzeptionell nur mit einer geringeren Anzahl an Links - der Grund ist, das du immer alle Daten auslesen mußt - was nicht unbedingt der Sinn von SQL ist. Die "Gruppierung" die du möchtest läßt sich nicht über SQL abbilden. - Du mußt die Links einfach nach Kategorie sortiert rausholen.

1:
SELECT Kategorie, Linktitel, Beschreibung, URL as cat_links FROM `$tabelle` ORDER BY Kategorie, Linktitel


Im PHP-Quellcode definierst du eine Variable "$LetzteKategorie = ''" bevor du die Datensätze aus dem Ergebnis ausliest. Dann prüfst du für jeden Datensatz ob die aktuelle Kategorie sich von der Variable unterscheidet. Wenn dies der Fall ist, gibst du das HTML für die Kategorie aus und ändert die Variable auf die aktuelle Kategorie.

Die Gruppierung ist ja nur optisch für die Ausgabe - eine Gruppierung in SQL faßt hingegen Inhalte zusammen. Außerdem solltest du darüber nachdenken eine seperate Tabelle für die Kategorien zu nutzen und in den Links nur noch die ID der Kategorie zu speichern. Such mal im Web nach "Datenbanknormalisierung".


---
Weaverslave

Diese Nachricht wurde geändert von: subjective
  Profil   Website   Editieren   Zitieren

tron187
Pixelschubser


Beiträge: 3


Hi,

vielen Dank für die Hinweise. Ich habe mich nun entschlossen, eine extra Tabelle für die Kategorien zu erstellen. Nur wie verknüpfe ich die Tabelle Links mit der Tabelle Linkkategorie?

Muss ich dann immer noch den PHP-Quellcode ändern!?

Gruß tron187

Diese Nachricht wurde geändert von: tron187
  Profil   E-Mail   Website   Editieren   Zitieren
 

Antworten
Nach oben