Jeg sidder lidt og arbejder med et statistiksystem til min side, jeg har en tabel kaldet "statistik" som ser således ud:
id | year | month | week | day | weekday | hour | hit
id: gir sig selv (int) year: årstallet ex 2004 (int) month: 1-12 - december = 12 (int) week: uge nr. (int) day: dato (int) weekday: ugedag: 0-6 søndag = 0 onsdag = 3 (int) hour: time 00-23 (int) hit: antal besøg (int)
Hver gang enbruger besøger siden, tjekker et lille script om der allerede findes en post med de samme tidskriterier, hvis der gør updateres posten, hvor hit tælles en op. Hvis ikke indsættes en ny post.
Nu kunne jeg godt tænke mig et udtræk der viser antalbesøg de sidste 5 dage. Hvordan gør jeg det smartest?!?
Jeg kan jo godt komme ud for at der ikke har været nogle besøg en dag, og derfor ingen poster i databasen med denne dato. Disse skal jo gerne vises med et 0.
Jeg synes du skal bruge et DATETIME felt istedet for: year, month, week, day, weekday og hour. De oplysninger kan du nemlig hente direkte ud af et DATETIME felt med diverse kommandoer som: YEAR(), MONTH(), WEEK(), DAYOFMONTH(), WEEKDAY(), osv. Det vil osse gøre det nemmere at lave en forespørgsel på fx de sidste 5 dage:
SELECT SUM(hit) AS antal_hits FROM statistik WHERE TO_DAYS(dato) >= TO_DAYS(NOW())-5 GROUP BY TO_DAYS(dato) ORDER BY dato DESC
SELECT COUNT(id) AS antal_hits, DATE_FORMAT(dato, '%d-%m-%Y') AS dato FROM statistik WHERE TO_DAYS(dato) >= TO_DAYS(NOW())-5 GROUP BY TO_DAYS(dato) ORDER BY dato DESC
men du kan selvfølgelig godt beholde hit feltet og for så vidt der er indsat noget den samme dag, kan du opdatere feltet. Du kan altid tjekke om der er en række der matcher: TO_DAYS(dato).
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.