MySQL | 'date'-Spalte | Einträge nach Monaten sortiert zählen

27apricot

Erfahrenes Mitglied
Hallo,

hier die Ausgangssituation:.

Es handelt sich um das Auslesen der MySQL-DB eines Clubs mit allen vergangenen Konzerten von 2004. Dafür gibt es ein PHP-Script 'progr_hist.php'.
Dieses gibt alle Monate aus, für die es Einträge gibt und verweist auf eine Monatsübersicht, die wiederum eine Übersicht über alle Konzerte jenes Monats ausgibt..
Außerdem verweist es auf eine Seite, von der aus alle Konzerte von 2004 ausgelesen werden.

>> [so sieht die Seite aus]

Soweit, so gut. Nun das Problem:

Ich möchte die Konzerte zählen. Alle Konzerte für 2004 zu zählen, ist kein Problem mit mysql_num_rows.
Jedoch weiß ich nicht, wie ich die Konzerte eines einzelnen Monats zählen kann, da ja auf dieser Seite alle Monate ausgelesen werden müssen.

In dem Script bediene ich mich einer Krücke (nehme ich an), um jeden Monat nur einmal anzuzeigen, da sonst jeder Monat so oft angezeigt würde, wie es Konzerte gibt. Der Monat wird mit einem Sinnlos-String verglichen.

Hier das PHP-Script:

(die Datumsspalte ist vom Typ 'date', also jjjj-mm-tt)

PHP:
$monat_vergleich = "leerer_string";
$sql_query "SELECT [...]";
[...]
// datums-definitionen

if ($monat_vergleich != $monat) { 
	echo "<a href=\"...\">$monat</a><br>";
	$monat_vergleich = $monat;
}

Auch nach dem Lesen verschiedener Beiträge hier im Forum bin ich nicht weitergekommen.
Vielleicht kann mir ja jemand helfen.

Viele Grüße und danke schon mal im Voraus.
27apricot.
 
auf die schnelle den tipp: stell die spalte auf int(10) um, speichere timestamps mit mktime() hinein und generiere dir mit Hilfe der Parameter die Grenzen der Monate ... siehe de.php.net/mktime
 
Ich hoffe, ich habe dich richtig verstanden.

PHP:
$sql = "SELECT MONTH(datumsspalte) AS monat, COUNT(MONTH(datumsspalte)) AS konzerte
FROM tabelle
GROUP BY MONTH(datumsspalte)";

Das würde dir alle Monate in denen Konzerte stattfanden (monat) und die Anzahl der Konzerte (konzerte) zurückgeben.

Gruß
Marvin
 
Hallo,

vielen, vielen Dank, Marvin. Funktioniert prima! Auch wenn das nun nicht mehr die Gesamtzahl der Konzerte zählt, sondern nur noch die Zahl der Monate.
Hab' das aber mit einer zweiten Abfrage gelöst, die wie bisher läuft und nur dafür da ist, eine Variable '$gesamtzahl' zu schreiben. (Vielleicht geht das ja auch mit weniger Quellcode?)

Danke auch an Divi. Das war mir jedoch ehrlich gesagt zu umständlich, da ich dafür einige andere Scripte auch hätte anpassen müssen. Aber wie gesagt: trotzdem danke!

ciao,
27apricot
 
Zurück