Avatar billede madsens90 Praktikant
10. marts 2010 - 12:27 Der er 8 kommentarer og
1 løsning

Statistik script over antal besøg pr måned! (Hits og visits)

Hej Eksperter!

Da det er mig der laver PHP delen på min kammerats hjemmeside, og han bad mig lave en statistik, er jeg gået i gang med det.

Jeg har lavet et script der når du loader en side tjekker om din ip står i databasen for den gældende dag. Hvis ikke laver den en ny række med:
id (autoincreament),
ip (brugerens IP),
tid (hvornår brugeren så siden, gemt i linux timestamp med PHP funktionen time() ),
hits (hvor mange gange brugeren har set siden den gældne dag (standardværdi er 1)),

Det vil så sige at næste gang han ser siden den dag laver den bare hits = hits + 1, så man kan se hvor mange hits der har været på en dag ved at tage summen af alle hits, og man kan se hvor mange visits der har været ved at tælle rækkerne i stedet.

Nu er jeg kommer dertil hvor jeg skal lave statistikken i en tabel.

den ser indtil videre sådan ud:

http://musiccharten.dk/statistik.php

Den skal så skrive for hver måned hvor mange gennemsnitlige hits og visits, og total hits og visits.

Men hvordan laver jeg en select der kigger på rækken TID, og laver en sum af alle hits for kun den måned, og en mysql_num_row der tæller hvor mange rækker der i tabellen med den gældne måned i tid?

Håber i forstår!!
Tak på forhånd!

Mvh. Christian Madsen
Avatar billede repox Seniormester
10. marts 2010 - 12:35 #1
Af ren og skær nysgerrighed, men hvorfor ikke bruge noget som allerede er lavet? Google Analytics f.eks.? Som kan give en meget  detaljeret statistik?
Avatar billede madsens90 Praktikant
10. marts 2010 - 13:14 #2
Går ind for at lave tingene selv. ;)
Vil gerne være sikker på at det virker efter hensigten, og det er der kun en måde at sikre sig på, og det er at vide hvordan det er lavet. :D

Har hjemmesiden hos one.com og der er også allerede en statistik.
Avatar billede repox Seniormester
10. marts 2010 - 14:02 #3
Jeg bliver så til gengæld nød til at være lidt flabet i denne situation og har derfor et spørgsmål til dig, når nu du mener at du vil være sikker på at 'det virker efter hensigten'; hvordan skal du være i stand til at give et mere retvisende billede af den nødvendige statistik (her tænker jeg hits vs. clicks samt besøgsloyalitet), når du nu får behov for at stille (relativt) simple spørgsmål herinde?

Statistik er jo reelt kun brugbar i tilfælde af man kan give et retvisende billede af de data der bliver opsamlet.
Forestil dig x antal mennesker der sidder bag den samme IP med samme browser (f.eks. en skole eller en virksomhed). Hvad er x?`Er det 1 person? er det 5? Er det 15? Og hvad med i morgen - er det de(n) samme person(er) der besøger siden?
Eller hvad med dem, som stadig har dynamiske IP'er - hvor mange besøgende kan en person så give dig indtrykket af de er?

Nå, sidespring...

Hvis du gemmer et tidspunkt i databasen som UNIX timestamp, så må du (for at få en måneds mellemrum) først afgøre hvilken måned der er tale, finde UNIX timestampet (ved hjælp af mktime() ) på den første og den sidste dag i måneden.

Derefter skal du lave en sql forespørgsel der kan hente alle data hvor TID er mellem den første og sidste dag.
<?php
  $maaned = $_GET["maaned"];
  $year = $_GET["year"];
 
  $dayOne = mktime(0, 0, 0, $maaned, 1, $year);
  $dayLast = mktime(23, 59, 59, $maaned, date("t", $dayOne), $year);

  $sql = "SELECT * FROM table WHERE tid > ".$dayOne." && tid < ".$dayLast;



?>


Utestet, men det giver dig forhåbentligt en idé om hvor du kan starte...
Avatar billede madsens90 Praktikant
10. marts 2010 - 14:12 #4
Tester din kode om lidt, og tak for koden. :)

Men kan lige svarer på dine spørgsmål.

Jeg finder slet ikke det her svært på den måde at jeg ikke ved hvordan man gør, eller ikke kender itl php funktionerne.

Det jeg ikke kan er lige i dette tilfælde at sætte dem sammen på en simpel måde.. Har du aldrig noget hvor du godt VED hvordan man gør, og det virkelig irriterer dig, og du til sidst er nød til at spørge en anden. Og så tænker du "Nåår jah for fanden! Hvorfor gjorde jeg dog ikke bare sådan!". Sådan har jeg det lige nu. ;)


Det jeg mener med at det virker efter hensigten er at den opfanger alle besøg. Og jeg vil kun have at en computer skal tælle som et forsøg, ligemeget hvor mange der sidder bag skærmen.

Problemet er at jeg ikke har haft held med at de andre statistiker man kan bruge rent faktisk virker, så har droppet chart.dk fordi at 80% af visits ikke blev registreret, og google analytics af samme årsag.
Plus at jeg det jeg selv har lavet opdaterer live, og er tilgængeligt for alle brugere. :)
Avatar billede repox Seniormester
10. marts 2010 - 14:27 #5
"Det jeg mener med at det virker efter hensigten er at den opfanger alle besøg. Og jeg vil kun have at en computer skal tælle som et forsøg, ligemeget hvor mange der sidder bag skærmen."
Hvis der sidder fem personer bag samme ip, kan det jo godt være fem forskellige computere? Et bibliotek? Well, din beslutning...

"Problemet er at jeg ikke har haft held med at de andre statistiker man kan bruge rent faktisk virker, så har droppet chart.dk fordi at 80% af visits ikke blev registreret, og google analytics af samme årsag."
Det er jo også kun useriøse 'udviklere' der anvender chart.dk, nope.dk eller lignende... Men hvis du har dokumentation for at 80% af dine besøgende ikke bliver registreret hos Google Analytics (eller bare alt over 3%) vil jeg gerne se den.

"Plus at jeg det jeg selv har lavet opdaterer live, og er tilgængeligt for alle brugere."
Åhh, ja - 90'ernes famøse '312 mennesker har besøgt denne side' tællere...
Avatar billede madsens90 Praktikant
10. marts 2010 - 14:35 #6
Du virker negativ over at jeg kan lide at lave tingene selv, i stedet for at bruge andres værk. ;) Nu kan jeg også godt lide at programmere.

Ved godt at det sker hvis flere sidder bag samme IP, men hvorfor skulle det være anderledes for nogle andre statistikker?
Så skal man jo have mac adresser, og kan man jo ikke lege med.

Jeg anvendte 'chart.dk' førhen, da jeg ikke var klar over hvor skod det var. 'nope.dk' kender jeg ikke.
Problemet med googles ting og sager er ikke så meget hvor meget de opfanger, men mere opdaterings tiden. Vil have de nyeste tal næste gang man opdaterer siden.

Der skal ikke være en sidetæller.. Kun statistikker på en side for sig selv. Der bliver muligvis et link i bunden af siden til 'statistik', men ved ikke endnu.
Avatar billede repox Seniormester
10. marts 2010 - 14:53 #7
Jeg er stor fortaler for at man kan finde ud af at lave tingene selv og at man giver sig selv mulighed for at udvikle sig, hvor man kan; man skal blot kende sine begrænsninger samt de områder man er stærkest på.

Generelt er statistik et uhyre kompliceret område; om det er webstatistik, salgsstatistik eller hvad du nu kan finde på.

Uanset om du kan lide at programmere eller ej, så må man erkende sit tekniske niveau; og selvom jeg har været i branchen længe, er statistik stadig noget som indeholder meget mere end man blot lige forestiller sig.

Det er uhyre simpelt at adskille den ene computer fra den anden, bag et netværk; problemet ligger bare i at samle det rigtigt op og behandle det rigtigt, hvilket så også går hen og berører emnet besøgsloyalitet; besøgsloyalitet er stort set en videnskab...

Det korte af det lange er at hvis du mener den statistik du selv kommer til at lave passer fint til behovet, så fortsæt endelig. Men retvisende statistik bliver det ikke...
Avatar billede madsens90 Praktikant
10. marts 2010 - 15:22 #8
Det kommer an på hvad den skal vise om den er retvisende. ;)

Kom med et svar! Det fungerer perfekt, efter at have roddet lidt med det. :D

Jeg elsker at programmere, og jeg elsker at blive bedre til det! Så jo flere udfordringer destro bedre. :)
Avatar billede repox Seniormester
10. marts 2010 - 15:26 #9
Du fik et svar her
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester