Willkommen in der Webstatt Zum Webstatt Blog und Stories
fish fish am 15.10.09 21: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?

netcup.de Warum gibt es hier Werbung?
danieL danieL am 16.10.09 07:48

Quote
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', '', ''),
('2009-10-16 00:00:00', 'jaja', 'jajahja2'),
('2009-10-21 07:38:52', 'dsaewq', 'ewqesaes'),
('2009-10-01 07:39:14', 'dsadsa', 'aewqsaeq'),
('2009-10-01 07:39:25', 'wqergq', 'refarrwar'),
('2009-10-17 07:39:31', 'dsadsa', 'dtqgjrwhjefw');


SELECT * FROM `stat` GROUP BY date

ergibt folgende rückgabe:

Quote
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 ;)

fish fish am 16.10.09 18: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.

danieL danieL am 17.10.09 15: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"), date("Y"));
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.

Creative Commons Lizenzvertrag
Alle Inhalte des Webstatt-Archivs stehen unter einer Creative Commons Namensnennung - Weitergabe unter gleichen Bedingungen 3.0 Unported Lizenz.

Impressum & Kontakt