2012-04-21 10 views
8

Mam tabelę, która zawiera zapisy członków i chciałbym móc zacząć robić wykresy i analizy danych i szukać trendów rejestracji itp., Więc chciałbym móc narysuj wykres liniowy, który pokazuje, ile osób zapisało się co tydzień przez ostatnie 52 tygodnie.Zliczanie zdarzeń tygodniowo w PHP

Mam wykresy działające OK, ponieważ już ich intensywnie używam, ale staram się dowiedzieć, jak wyodrębnić dane z MySQL przy użyciu PHP, co denerwuje mnie, ponieważ wiem, że nie powinno to być trudne - tabela ma pole o nazwie datestamp z formatem Ymd. Jak najlepiej utworzyć pętlę, która drukuje datę i liczbę rejestracji w tym tygodniu i każdym tygodniu przez 52 poprzednie tygodnie?

+0

nie zapomnij, aby zaakceptować odpowiedz, jeśli to było pomocne! –

Odpowiedz

12

Zakładając swoją kolumnę timestamp jest nazywany signup_date, można zrobić kwerendę jak:

SELECT 
    WEEKOFYEAR(signup_date) AS weekno, 
    COUNT(1) AS signups 
FROM your_table 
GROUP BY WEEKOFYEAR(signup_date); 

To daje zestaw wynik 2 kolumny, tydzień roku, a ilu rejestracje były w W tym tygodniu.

Edit 1:

Aby uzyskać datę tygodnia dla każdego z tych wyników, można dodać następujące zapytania:

SELECT 
    WEEKOFYEAR(signup_date) AS weekno, 
    COUNT(1) AS signups, 
    SUBDATE(signup_date, INTERVAL WEEKDAY(signup_date) DAY) AS date_of_week 
FROM your_table 
GROUP BY WEEKOFYEAR(signup_date); 
+0

To działa doskonale, ale na jedną małą rzecz - chciałbym móc wyglądać 52 tygodnie przed dniem dzisiejszym, zamiast patrzeć na 52 tygodnie w roku. Używając tej metody, ten tydzień jest pokazany (poprawnie) w 16 tygodniu, ale podczas kreślenia chciałbym, aby ten tydzień był pokazany jako tydzień 1 (lub 52), a następnie tydzień 2 tydzień (lub 51) i tak dalej, więc zmienia się każdy w miarę upływu czasu. Możliwe jest również pokazanie faktycznej daty tygodnia, np. 01.01.2012 r. 4, 01.08.2012 r. 14 i tak dalej? – bhttoan

+0

Zobacz Edytuj 1, aby zobaczyć ostatnią część komentarza. –