11. september 2006 - 17:40
Der er
20 kommentarer og 1 løsning
Besøg pr time
Hej, Nu har jeg siddet i lang tid og prøvet at finde ud af at få php til at spytte resultater ud fra en given dato og dele dagen op i 00 - 23. At lave en "for" fra 00-23 er som sådan intet problem. Jeg har en database med id,date (timestamp), ud fra date vil jeg have alle resultat som passer til f.eks. 11-09-2006 og herefter 00-23... Altså kort sagt "hits pr time"...
Annonceindlæg tema
Offentlig digitalisering
Fra effektivisering til digital suverænitet. Hvordan skaber det offentlige en digital fremtid med AI, sikkerhed og kontrol i centrum?
11. september 2006 - 18:20
#1
Prøv dette: SQLECT hour(ditDatoFelt) AS klokken, count(*) AS hits FROM dinTabel WHERE date(ditDatoFelt) = '2006-09-11' GROUP BY klokken ORDER BY klokken ASC
11. september 2006 - 18:32
#2
hm.. glemte selvfølgelig at skrive at det er en mysql database
11. september 2006 - 18:33
#3
Der er vist ikke noget specielt anti-MySQL i løsningen.
11. september 2006 - 18:41
#4
nei, jeg har nemlig prøvet lidt... skulle lige se lidt nærmere efter koden. Det som er, er at koden skal tælle fra 00 til 23 og udfra det skrive hvor mange hits er fundet. ex. 00: 0 ... 13: 5 14: 3 15: 8 ... 23: 2
11. september 2006 - 18:42
#5
skal eg køre noget interval på query'en?
11. september 2006 - 18:45
#6
Har du prøver SQL-sætningen? Virker den ikke? Hvad sker der da? skal eg køre noget interval på query'en?> Ikke forstået?
11. september 2006 - 18:47
#7
Jeg har skrivet SQL-sætningen og sat den til at spytte ud: echo $row['klokken'].": ".$row['hits']."<br>"; hvilket resulterer i: 115794: 58 115796: 2 115797: 5 115798: 13
11. september 2006 - 18:50
#8
jeg mener sådan at SQL-sætningen gentager sig selv 24 gange indenfor det givne dato? om det er muligt...
11. september 2006 - 18:57
#9
Det skulle ikke være nødvendigt. GROUP-BY-leddet burde kunne klare den del. Hvilken slags timestamp bruger du? Et almindeligt eller et UNIX-timestamp? Eller rettere sagt; Hvad kunne der typisk stå i sådan et felt?
11. september 2006 - 19:04
#10
jeg bruger UNIX_TIMESTAMP()
11. september 2006 - 19:05
#11
da kan jeg bruge et FROM_UNIXTIME(date, '%d-%m-%Y') = '11-09-2006' ...
11. september 2006 - 19:07
#12
Prøv med: SELECT hour(FROM_UNIXTIME(ditDatoFelt)) AS klokken, count(*) AS hits FROM dinTabel WHERE date(FROM_UNIXTIME(ditDatoFelt)) = '2006-09-11' GROUP BY klokken ORDER BY klokken ASC
11. september 2006 - 19:12
#13
den siger intet...
11. september 2006 - 19:18
#14
nu fungerer... jeg skiftede bare date(FROM_UNIXTIME(ditDatoFelt)) = '2006-09-11' ud med FROM_UNIXTIME(date, '%Y-%m-%d') = '2006-09-10'
11. september 2006 - 19:22
#15
nu mangler bare at få udfyldt de timer hvor ingen besøgende har været f.eks: 12.00 : 0 13.00 : 2 14.00 : 4 15.00 : 0 nu kommer kun de timer hvor besøgende har været...
11. september 2006 - 19:36
#16
du nielle, det fungerer fakt. helt fantastiskt... men har du nogen idé om hvordan jeg kan fylde de tomme timer ud? Jeg har prøver med !mysql_num_rows($counter)... men da det nu bliver gruppet (GROUP BY) bliver det jo ikke til noget videre resultat
11. september 2006 - 20:19
#17
Den del bliver du nok nødt til at gøre i PHP-koden. SQL kan jo ikke selv "gætte" sig til hvad der mangler.
11. september 2006 - 20:51
#18
ja, det er lige det. Men jeg takker for assistansen for først, jeg poster den færdige kode her ;) lægger du lige et svar...
11. september 2006 - 20:55
#19
Jeg assistere da gerne med PHP-delen hvis det bliver nødvendigt?
18. september 2006 - 18:50
#20
Ja, det ville være meget sjovt. Jeg lægger ud det som er kommet indtil videre.
20. september 2006 - 18:25
#21
Ville du lægge noget ud?
Vi tilbyder markedets bedste kurser inden for webudvikling