MySQL-Daten mit PHP sortiert ausgeben

Hallo zusammen,

ich habe eine DB mit 3 Tabellen, die ich mit folgendem Query auslese:

SELECT *
FROM daten, kategorie, rubrik
WHERE daten.kategorie_id = kategorie.kategorie_id
AND daten.rubrik_id = rubrik.rubrik_id
ORDER BY daten.kategorie_id, daten.topic

Das alles geht in ein assoziatives Array. Nun zu meiner Frage:

Ich hätte gerne folgende Ausgabe:

Kategorie 1:
topic 1
topic 2
topic 3
usw.

Kategorie 2:
topic a
topic b
topic c
usw.

Kategorie 3:

Wie schaffe ich es, das die Daten nach Kategorie ausgegeben werden?
Wäre nett, wenn mir jemand helfen könnte.

Viele Grüße
Bio

++

hallöchen

das kannst du über einen group by machen

also wenn ich das richtig sehe:

SELECT *
FROM daten, kategorie, rubrik
WHERE daten.kategorie_id = kategorie.kategorie_id
AND daten.rubrik_id = rubrik.rubrik_id
ORDER BY daten.kategorie_id, daten.topic
GROUP BY daten.kategorie_id

somit müsste es passen

lg

cugar

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hallo,

die Abfrage stimmt soweit schonmal. Das Gruppieren der Daten kannst Du auch hervorragend bei der Ausgabe machen, und zwar z.B. wie folgt:
$oldCategory = „“;
while(($dbRow = mysql_fetch_assoc($result)) !== false){
if($oldCategory != $dbRow[„category_name“]){
echo "Kategorie „“ . $dbRow[„category_name“] . ""
";
$oldCategory = $dbRow[„category_name“];
}
echo $dbRow[„topic_name“] . "
";
}

Wobei eben $dbRow jeweils die entsprechende Datenbankzeile mit dem assoziativen Array ist und Du die Feldnamen noch entsprechend anpassen musst.

Wenn Du noch Fragen hast, einfach schreiben.

Liebe Grüße aus Augsburg,
Stephan Schulze

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hallo Stephan und cugar,

herzlichen Dank für die Lösungsvorschläge. Muss ich heute gleich mal ausprobieren…

die Abfrage stimmt soweit schonmal. Das Gruppieren der Daten
kannst Du auch hervorragend bei der Ausgabe machen, und zwar
z.B. wie folgt:
$oldCategory = „“;
while(($dbRow = mysql_fetch_assoc($result)) !== false){
if($oldCategory != $dbRow[„category_name“]){
echo "Kategorie „“ . $dbRow[„category_name“] .
""

";
$oldCategory = $dbRow[„category_name“];
}
echo $dbRow[„topic_name“] . "
";
}

Wobei eben $dbRow jeweils die entsprechende
Datenbankzeile mit dem assoziativen Array ist und Du die
Feldnamen noch entsprechend anpassen musst.

Wenn Du noch Fragen hast, einfach schreiben.

Liebe Grüße aus Augsburg,
Stephan Schulze

Hallo Stephan,

danke, das funktioniert schon ganz gut, allerdings wird der Kategoriename bei jedem Eintrag wiederholt:

Katgorie 1
topic 1
Kategorie 1
topic 2

Ich möchte die Kategorie nur einmal ausgeben also in dieser Form:

Kategorie 1:
topic 1
topic 2
topic 3
usw.

Kategorie 2:
topic a
topic b
topic c
usw.

Anbei nochmal meine komplette SQL-Abfrage, vielleicht ist das dann etwas klarer:

$query= „SELECT *
FROM daten, kategorie, rubrik
WHERE daten.kategorie_id = kategorie.kategorie_id
AND daten.rubrik_id = rubrik.rubrik_id
ORDER BY daten.kategorie_id, daten.topic“;

$tontechnik = mysql_query($query, $connect) or die(mysql_error());
$row_tontechnik = mysql_fetch_assoc($tontechnik);
$totalRows_tontechnik = mysql_num_rows($tontechnik);

Grüßle Bio

Hi!

ich habe eine DB mit 3 Tabellen, die ich mit folgendem Query
auslese:

SELECT *
FROM daten, kategorie, rubrik
WHERE daten.kategorie_id = kategorie.kategorie_id
AND daten.rubrik_id = rubrik.rubrik_id
ORDER BY daten.kategorie_id, daten.topic

Das alles geht in ein assoziatives Array. Nun zu meiner Frage:

Ich hätte gerne folgende Ausgabe:

Kategorie 1:
topic 1
topic 2
topic 3
usw.

Kategorie 2:
topic a
topic b
topic c
usw.

Kategorie 3:

Wie schaffe ich es, das die Daten nach Kategorie ausgegeben
werden?
Wäre nett, wenn mir jemand helfen könnte.

Viele Grüße
Bio

Die einfachste Methode dürfte sein, die Daten satzweise entgegenzunehmen und in PHP einen Gruppenwechsel auszuprogrammieren, der sie in die gewünschte Ausgabeform bringt.

Grüße
Heinrich