Kategorien als Überschriften

Hoppes

Grünschnabel
Hallo,
ich möchte gerne, dass das Ergebnis einer Datenabfrage gruppiert nach Kategorien ausgegeben wird und die jeweilige Kategorie als Überschrift den folgenden Ergebnissen vorrausgeht.

Bsp.:
Blondienenwitze (Überschrift 1)
Ergebnis 1,
Ergebnis 2,
etc.

Ostfriesenwitze (Überschrift 2)
Ergebnis 1,
Ergebnis 2,
etc...

vielleicht kann mir jemand von Euch weiterhelfen,
mit dankt vom PHP-Neuling Hoopes
 
Dann beschreibe doch mal bitte Deine Datenbankstruktur (Tabellennamen, Feldnamen, Feldtyp, Feldbeschreibung, Assoziationen).
Sonst wird das Helfen schwierig.

Gruß hpvw
 
Danke für Deine schnelle Antwort,
meine Datenbankstruktur sieht folgendermaßen aus:

tabelle_1: Kategorien
k_id: index, Feldtyp integer
Kennung: text, Inhalt = A, B, C,.. bis Y
Kategorie: text, Inhalt = Blondienenwitze, Ostfriesenwitze, etc...

tebelle_2: Witze
w_id: index, Feldtyp integer
Kennung: text, Inhelt = A, B, C,.. bis Y
Witztext: text, Inhalt = Witze

Die (eindeutige) Zuweisung der Witze zu den Kategorien erfolgt über die Buchstaben im Feld Kennung, dabei ist jeder Witz eindeutig einer Kategorie zugeordnet. (Das dies über Buchstaben geschieht, ist vielleicht nicht optimal, aber vorerst leider nicht anders möglich)

Grüße von Hoppes
 
Na da machst du bei der Abfrage einfach:

SELECT * FROM * WHERE Kennung LIKE "blondine"

Für die Sterne weißt du ja was man einsetzen muss.

Dann spuckt er alle Blondienenwitze aus, drüber kannst du ja deine Überschrift setzen.
 
Zuletzt bearbeitet:
Hallo,
ich bin mir nicht ganz sicher, ob Deine Antwort ernst gemeint ist, oder ob ich mich wirklich so unklar ausdrücke. Ich versuche es nochmal zu erklären, wie mein Ergebnis aussehen soll:

Ich möchte, dass bei einer Abfrage einer Teilmenge oder auch aller Witze aus der Datenbank das Ergebnis gruppiert nach Kategorien aufgelistet wird. Jeder Datengruppe soll ihre Kategorie als Überschrift vorrausgehen.

Grüße Hoppes
 
So wie ich das verstehe, willst du das so haben:
KAT1
WITZ1
WITZ2
...
KAT2
WITZ1
WITZ2
..
...

Das hab ich mir vor kuzem geschrieben. EIne Arbeit. Musst mit for-Schleifen arbeiten und einer Klasse.
 
Hoppes hat gesagt.:
Die (eindeutige) Zuweisung der Witze zu den Kategorien erfolgt über die Buchstaben im Feld Kennung, dabei ist jeder Witz eindeutig einer Kategorie zugeordnet. (Das dies über Buchstaben geschieht, ist vielleicht nicht optimal, aber vorerst leider nicht anders möglich)
Das muss eine Anweisung vom Chef sein :(
Du könntest allerdings recht einfach, ein Integerfeld namens KategorieID einführen und darüber auf eine KategorieID verweisen (dafür sind Primärschlüssel da, um anderswo als Fremdschlüssel eingesetzt zu werden).

Aber ich versuche mich auch gerne an Deiner DB-Struktur:
Zunächst das Query:
Code:
SELECT 
Kategorien.k_id,
Kategorien.Kategorie,
Witze.Witztext
FROM Kategorien
JOIN Witze
    ON (Kategorien.Kennung=Witze.Kennung)
ORDER BY Kategorien.Kennung 
#oder auch ORDER BY Kategorie.Kategorie
Nun das auslesen, wodurch die Überschriften entstehen:
PHP:
//DB-Verbindung herstellen
$result = mysql_query(/*obiges Query*/);
$tempKID='';
while ($row=mysql_fetch_assoc($result)) {
    if ($tempKID!=$row['k_id']) {
        echo "<h1>".$row['Kategorie']."</h1>";
        $tempKID=$row['k_id'];
    }
    echo "<p>".$row['Witztext']."</p>";
}
 
Hallo hpvw,

Sorry, dass ich mich erst jetzt auf Deine Antwort zurückmelde. Hatte bisher leider noch keine Zeit mich mit Deinem Lösunsvorschlag zu beschäftigen.

Deine Lösung ist genau das, was ich gesucht habe. Vielen Dank dafür!

Ein kleiner Fehler war dennoch im Code verborgen. Die Änderung ist Fett markiert. So geht es aber perfekt.

Code:
//DB-Verbindung herstellen 
$result = mysql_query(/*obiges Query*/); 
$tempKID=''; 
while ($row=mysql_fetch_assoc(/*obiges Query*/)) { 
    if ($tempKID!=$row['k_id']) { 
        echo "<h1>".$row['Kategorie']."</h1>"; 
        $tempKID=$row['k_id']; 
    } 
    echo "<p>".$row['Witztext']."</p>"; 
}
 
nur so: das war/ist kein Fehler. Schau mal 2 Zeilen drüber. D steht das Ergebniss in der Variable $result.
 
Zurück