Webstatt.org - Community seit 2006 - 2012 (2024?)

Einträge pro Tag aus der Datenbank anzeigen

Avatar user-180
15.10.2009 19:48

Hallo.

Ich habe meiner MySQL-Datenbank eine Tabelle mit den Feldern date, type, und value. Die Daten im Feld date sind im Format "YYYY-mm-dd HH:ii:ss" gespeichert, die Daten in den Feldern type und value sind jeweils Strings. Für eine Statistik-Seite würde ich mit PHP eine Auswertung pro Tag erstellen, so dass ich zum Beispiel folgendes ausgeben kann:

"2009-10-14: 23 Einträge mit value=foo und 244 Einträge mit value=bar." 


Es soll dabei jeder Tag ab dem ersten Eintrag berücksichtigt werden, also auch Tage, an denen es keinen Eintrag gab.

Wie mache ich das am besten? Ich habe den Hinweis bekommen, dass das irgentwie mit GROUP BY gehen soll. Leider weiss ich nicht wie genau. Könnt ihr mir helfen?

may the force be with you. but mostly with me.
Avatar user-159
16.10.2009 05:48

CREATE TABLE `stat` (
`date` datetime NOT NULL,
`type` varchar(255) collate latin1_general_ci NOT NULL,
`value` varchar(255) collate latin1_general_ci NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci;

--
-- Daten für Tabelle `stat`
--

INSERT INTO `stat` (`date`, `type`, `value`) VALUES
('2009-10-14 00:00:00', '', ''zwinkern,
('2009-10-16 00:00:00', 'jaja', 'jajahja2'zwinkern,
('2009-10-21 07:38:52', 'dsaewq', 'ewqesaes'zwinkern,
('2009-10-01 07:39:14', 'dsadsa', 'aewqsaeq'zwinkern,
('2009-10-01 07:39:25', 'wqergq', 'refarrwar'zwinkern,
('2009-10-17 07:39:31', 'dsadsa', 'dtqgjrwhjefw'zwinkern;


SELECT * FROM `stat` GROUP BY date


ergibt folgende rückgabe:

2009-10-01 07:39:14 dsadsa aewqsaeq
2009-10-01 07:39:25 wqergq refarrwar
2009-10-14 00:00:00
2009-10-16 00:00:00 jaja jajahja2
2009-10-17 07:39:31 dsadsa dtqgjrwhjefw
2009-10-21 07:38:52 dsaewq ewqesaes


d.h. du würdest das in PHP in ein Array schreiben und die Einträge zum gleichen Datum zählen und im Array nach einem Datenwechsel suchen.

Ich hoffe du verstehst, was ich meine und das ich das richtig verstanden hab von dir vorher zwinkern

Avatar user-180
16.10.2009 16:35

ja hast es richtig verstanden. allerdings will ich auch eine statistik für tage, an denen es keinen eintrag gibt. diese "leeren" müssen mit php ergänzt werden, ich weiss leider nicht wie ich das machen soll.

may the force be with you. but mostly with me.
Avatar user-159
17.10.2009 13:15

Du müsstest die vorhanden Tage zählen, die zum Monat gehören und dann die Lücken füllen, d.h. wenn z.b. Tage 1-6,9,11-25 da sind musst du ja 7,8,10,26-? mit leeren Statistiken füllen. Die Anzahl der Tage im Monat findest du so heraus:

// Beispiel für März
$m = 3;
$tageImMonat = mktime(0, 0, 0, $m, date("d"zwinkern, date("Y"zwinkern);
echo date("t", $tageImMonat);


D.h. du müsstest dir erstmal aus dem Array das du aus der Datenbank bekommst die Monate separieren und kannst dann alles prüfen. Wahrscheinlich geht das auch einfacher, aber das ist eine Lösung, wie ich es machen würde.