Avatar billede crasher Nybegynder
24. marts 2004 - 16:24 Der er 45 kommentarer og
1 løsning

Besøgs statistik

Hey

Er der nogen der kan lave et statistik system for mig ? jeg har en MYSQL database hvor felterne ID, DATO og IP er. Jeg vil således have at man skulle kunne se hits idag, hits de sidste 7 dage og hits ialt den sidste måned. Altså sådan at den tæller alle de ID's som er blevet tilføjet indenfor sidste 24 timer og tæller alle de ID's der er blevet tilføjet inden for de sidste 7*24 timer og tæller alle de ID's der er tilføjet indenfor de sidste 30*24 timer. håber i forstår hvad jeg mener og vil hjælpe mig godt igang. er ikke god til php men skal jo starte et sted :)

på forhånd tak med venlig hilsen crasher
Avatar billede crasher Nybegynder
24. marts 2004 - 16:26 #1
det skal siges at jeg har allerede lavet således at den tilføjer ID, DATO og IP til databasen når der er en der går ind på min side :) men mangler bare "statistikken" således jeg kan få et overblik over de besøgende ;)

håber i eksperter kan hjælpe :))))
Avatar billede sukos Juniormester
24. marts 2004 - 16:27 #2
Vil da anbefale at du bruger noget som allerede er lavet, medmindre du gerne selv vil prøve dig frem.

http://awstats.sourceforge.net/

En "startup" side for AWStats:
http://www.showsource.dk/artikler/vis_artikel.php?id=1065375981
Avatar billede sukos Juniormester
24. marts 2004 - 16:28 #3
Og et eksempel på hvordan det ser ud:
http://www.showsource.dk/cgi/awstats.pl
Avatar billede crasher Nybegynder
24. marts 2004 - 16:28 #4
jamen det skal jo være PHP ? :)
Avatar billede crasher Nybegynder
24. marts 2004 - 16:30 #5
ellers forstår jeg slet ikke noget :)) men ideen er god med at finde noget som allerede er lavet. ellers nogen der kan hjælpe mig ? måske med at kode det manuelt? ville være rigtig fedt
Avatar billede sukos Juniormester
24. marts 2004 - 16:35 #6
Du kan prøve at kikke dig frem her:
http://sourceforge.net/softwaremap/trove_list.php?form_cat=245

At lave det selv er selvf. muligt, men man skal sgu ha' godt styr på PHP, medmindre man kan nøjes med en enkel og MEGET overskuelig statistik! :O)
Avatar billede crasher Nybegynder
24. marts 2004 - 16:36 #7
jamen jeg skal bruge en enkel og meget overskuelig statistik :)) altså den skal kun vist hits idag, hits for sidste uge og hits for sidste måned. er det ikke enkelt ?
Avatar billede sukos Juniormester
24. marts 2004 - 16:43 #8
Jow! :O) Især hvis det kun er antal hits! F5-F5-F5 :O)
Avatar billede crasher Nybegynder
24. marts 2004 - 16:45 #9
jamen det er det kun. og den er IP sikret den jeg har lavet. skal bare have udskrevet statistik nu :))) kan du så hjælpe? hyg
Avatar billede crasher Nybegynder
24. marts 2004 - 17:01 #10
der må da være en der kan hjælpe ?
Avatar billede crasher Nybegynder
24. marts 2004 - 17:05 #11
er der ikke en der fx. ved hvordan man hiver alle ID's ud af en database som er blevet oprettet indenfor det sidste døgn ?
Avatar billede sukos Juniormester
24. marts 2004 - 17:17 #12
Hvordan gemmer du dato?
Avatar billede henriktha Nybegynder
24. marts 2004 - 17:19 #13
Har du et unix timestamp i databasen eller hvad bruger du til at se hvornår hittet er fra ???
Avatar billede crasher Nybegynder
24. marts 2004 - 17:23 #14
jeg har et felt der hedder DATO hvor der tilføjes en DATO feltet har vist indstillingen datetime .... er det noget i kan bruge ?
Avatar billede crasher Nybegynder
24. marts 2004 - 17:26 #15
kan fx. se at der i feltet DATO der har indstillingen 'datetime' har været en besøgende klokken '2003-08-21 16:00:31'

kan i bruge det ?
Avatar billede henriktha Nybegynder
24. marts 2004 - 17:41 #16
Tja.... 2 date resultater med samme format og kør en sql forespørgsel på dem
Avatar billede crasher Nybegynder
24. marts 2004 - 17:43 #17
forstår ikke hvad du mener ?.. er meget dårlig til PHP :(
Avatar billede henriktha Nybegynder
24. marts 2004 - 17:45 #18
$after = date('d M Y 00:00:00', time());
$before = date('d M Y 23:59:59', time());

Så laver du en sql forspørgsel der hedder
Select from din_tabel where dit_tidsfelt > $after and dit_tidsfelt < $before
Avatar billede crasher Nybegynder
24. marts 2004 - 17:47 #19
sorry men forstår det ikke.. hvordan skal jeg gøre det?.. plz help..
Avatar billede henriktha Nybegynder
24. marts 2004 - 17:49 #20
Indsæt felterne $after & $before i dit script som de ovenover

Og lav din sql sætning som jeg har vist.... hvis du da kan lave en sql sætning ;-)
Avatar billede crasher Nybegynder
24. marts 2004 - 17:51 #21
okay prøver lige :) man kan jo kun gøre sit bedste. vender tilbage om lidt :))
Avatar billede henriktha Nybegynder
24. marts 2004 - 17:53 #22
Sætningen skal cirka se sådan ud:

SELECT * FROM tabel WHERE dato >  " . $after . " AND dato < " . $before . "
Avatar billede crasher Nybegynder
24. marts 2004 - 18:07 #23
nu ser min kode sådan ud:

<?php
    require("../config.php"); // her er min connection i

$after = date('d M Y 00:00:00', time());
$before = date('d M Y 23:59:59', time());

$result = mysql_query("SELECT * FROM statistik WHERE dato >  " . $after . " AND dato < " . $before . "");
while($row = mysql_fetch_array($result)) {

    echo $row[id];
   
}
?>

Jeg får ingen fejl men jeg får heller ingen resultater.. får bare blank skærm. hvordan får jeg den til at tælle disse ID's? og så udskrive dem ? jeg laver vel ikke de store fejl i koden ? :) hehe........
Avatar billede crasher Nybegynder
24. marts 2004 - 18:13 #24
hmm nu får jeg denne fejl:

Parse error: parse error, unexpected T_STRING in G:\frip.dk\frip\test.php on line 13

linien hvor fejlen kommer er:

while($row = mysql_fetch_array($result)) {

underligt ? :(
Avatar billede henriktha Nybegynder
24. marts 2004 - 18:15 #25
Skal du ikke bare tælle hvor mange der er ????
Avatar billede henriktha Nybegynder
24. marts 2004 - 18:18 #26
Så vidt jeg lige kan se er den eneste fejl i din nuværende kode at du ikke har et felt der hedder id ?!?
Avatar billede henriktha Nybegynder
24. marts 2004 - 18:21 #27
Nå men for en helt anden ting behøver du slet ikke den løkke....

Slet
while($row = mysql_fetch_array($result)) {
    echo $row[id];
}

Indsæt istædet:
$antal = mysql_num_rows($result);

Så skulle antallet gerne ligge i variablen $antal :-)
Avatar billede crasher Nybegynder
24. marts 2004 - 18:28 #28
nu har jeg skrevet

<?php

connection her!

    $after = date('d M Y 00:00:00', time());
    $before = date('d M Y 23:59:59', time());

        $result = mysql_query("SELECT * FROM statistik WHERE dato >  " . $after . " AND dato < " . $before . "");
        $antal = mysql_num_rows($result);

        echo $antal;
   
   
?>

men underligt nok får jeg en fejl i denne linie:

        $antal = mysql_num_rows($result);

som siger:

Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in G:\test.php on line 14

er jeg helt galt på den ? :(
Avatar billede henriktha Nybegynder
24. marts 2004 - 18:31 #29
Fejlen ligger ihvertfald i din $result.. grunden til at den kommer i $antal er at du først henter forespørgslen i den.....

Dobbelt tjek:
Hedder din tabel statistik
hedder dit kolonne dato

Tjek at der ikke er forskel på STORE og små bogstaver

Har selv lige kørt den forespørgsel du har skrevet cut&paste uden problemer
Avatar billede crasher Nybegynder
24. marts 2004 - 18:36 #30
problemet ligger altså her?

$result = mysql_query("SELECT * FROM statistik WHERE dato >  " . $after . " AND dato < " . $before . "");

er helt 1000% sikker på at min tabel er statistik og min kolonne hedder dato :(
Avatar billede crasher Nybegynder
24. marts 2004 - 18:37 #31
der er også KUn små bogstaver i tabelnavnet og kolonnenavnet..
Avatar billede crasher Nybegynder
24. marts 2004 - 18:42 #32
hvis jeg skriver:

        $result = mysql_query("SELECT * FROM statistik WHERE dato");

så virker det fint

men så får jeg bare ALLE udskrevet :(
Avatar billede crasher Nybegynder
24. marts 2004 - 18:43 #33
somom der er noget galt med det after og before noget ? :))) plz help hehe.
Avatar billede henriktha Nybegynder
24. marts 2004 - 18:44 #34
Sorry... det var en dumme fejl.... he he

ret koden til
$result = mysql_query("SELECT count(*) FROM statistik WHERE dato >  '" . $after . "' AND dato < '" . $before . "'");
Avatar billede crasher Nybegynder
24. marts 2004 - 18:48 #35
nu sker der noget. men den siger der kun har været en inde på min side idag selvom der er registreret mange flere IP'er idag :(
Avatar billede crasher Nybegynder
24. marts 2004 - 19:01 #36
hmm kan det være noget med at der i den after og begin variable står d M Y ?.. når man kigger på datoen hedder den fx.: 2003-08-21 16:00:31

burde man så ikke skrive Y M d ?.... har lige prøvet det og det hjalp ikke men mon det er noget med det ?
Avatar billede henriktha Nybegynder
24. marts 2004 - 19:03 #37
Nej nu dør jeg sku ad grin.... ret lige godt du var vågen der... havde vendt dato formatet forkert i forhold til det du skrev først i tråden '2003-08-21 16:00:31'

Havde jo sat dansk dato format ligesom min egen sql server :-)

Her er koden der virker til din server:
$after = date('Y-m-d 00:00:00', time());
    $before = date('Y-m-d 23:59:59', time());

  $result = mysql_query("SELECT * FROM statistik WHERE dato >  '" . $after . "' AND dato < '" . $before . "'");
    $antal = mysql_num_rows($result);
    echo $antal;

Sorry :-)
Avatar billede henriktha Nybegynder
24. marts 2004 - 19:03 #38
Please sig nu det virker inden jeg rykker håret af mig selv :-)
Avatar billede crasher Nybegynder
24. marts 2004 - 19:08 #39
så virker det!!! :)..

viser den det så indenfor de sidste 24 timer eller viser den fra klokken 00:00 i nat ?

hvad så hvis jeg vil have den til at vise for en uge og en måned?

forresten du skal ikke sige sorry! :) det er mig der takker.
Avatar billede henriktha Nybegynder
24. marts 2004 - 19:11 #40
Den viser det fra kl. 00:00:00 til kl. 23:59:59 på den dato vi har den dag du kigger
Avatar billede henriktha Nybegynder
24. marts 2004 - 19:11 #41
Her er lige en til en ugestatistik:

$after = date('Y-m-d 00:00:00', time()-604800);
    // 60 sekunder * 60 minutter * 24 timer * 7 dage = 604800 sekunder
 
  $result = mysql_query("SELECT * FROM statistik WHERE dato >  '" . $after . "'");
    $antal = mysql_num_rows($result);
    echo $antal;
Avatar billede crasher Nybegynder
24. marts 2004 - 19:21 #42
jamen så er en måned jo heller ikke så svær :)...

en sidste ting tror jeg. efter fx. antal af hits over en uge vil jeg gerne have til at være en parentes hvor der så står hvor mange hits der i snit har været pr. dag, fx.

De sidste 7 dage har der været 53 besøgende (7,5 pr. dag)

hvis du forstår :)))
Avatar billede crasher Nybegynder
24. marts 2004 - 19:21 #43
skal sådan set bare lave et lille regnestykke med antal.... men hvordan gøres det :)))
Avatar billede henriktha Nybegynder
24. marts 2004 - 19:44 #44
Hmm.... på det spørgsmål må jeg være dig svar skyldig.....

Men kom lige i tanke om at uge funktionen jo ikke skal være kl. 00:00:00 for en uge siden så der hedder den istedet:

$after = date("Y-m-d H:i:s", mktime(date("H"),date("i"),date("s"),date("m"),date("d")-7,date("Y")));

Og Måned:

$after = date("Y-m-d H:i:s", mktime(date("H"),date("i"),date("s"),date("m")-1,date("d"),date("Y")));
Avatar billede crasher Nybegynder
24. marts 2004 - 19:49 #45
det spiller baRE!!! :).... tusind takker der.... og alle point til dig hehe.........
Avatar billede henriktha Nybegynder
24. marts 2004 - 19:58 #46
Tak selv.... he he... ja det var da heller ik uden problemer, specielt ik når man sidder og sover i timen *LOL*
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