Avatar billede Slettet bruger
10. januar 2004 - 20:26 Der er 7 kommentarer og
1 løsning

Side statistik

Hej

Jeg har lavet en hjemmeside og nu vil jeg gerne lave til  statistik på hvilke side folk besøger. Det fik jeg også lavet, men problemet er at den tæller hver gang man opdatere.
Ville gerne have at der skulle gå 5 minutter før, at den samme IP kunne tælle den samme side igen.

Fx. Hvis jeg går ind på index.php, så tæller den en gang så læser jeg lidt der og så går jeg videre til download.php, så tæller den en gang, ved download og så går jeg tilbage til index.php, men da der ikke er gået mere end 5 minutter, så tæller den ikke.

Nogen som kan hjælpe mig med det ?
Avatar billede ahv Nybegynder
10. januar 2004 - 20:31 #1
Du kan sandsynlig vis rette dette til (kører med MySQL) Den tæller hver 24 time.

<?php
$connection = mysql_pconnect("host", "user", "pass");
mysql_select_db("database");

$ip = $_SERVER['REMOTE_ADDR'];

$besoegt_idag = mysql_query("SELECT COUNT(*) AS antal FROM counter WHERE ip='$ip' AND date_add(time,interval 24 HOUR) > NOW() ORDER BY id DESC LIMIT 0,1") or die(mysql_error());
if (!mysql_result($besoegt_idag,0)) {
    mysql_query("INSERT INTO counter (time, ip) VALUES (NOW(),'$ip')");
}

$besoeg_ialt = mysql_query("SELECT COUNT(*) AS antal FROM counter");
echo "Der har været ".mysql_result($besoeg_ialt,0)." besøg";
mysql_close($connection);
?>
Avatar billede ahv Nybegynder
10. januar 2004 - 20:32 #2
Tilpasset din;

$besoegt_idag = mysql_query("SELECT COUNT(*) AS antal FROM counter WHERE ip='$ip' AND date_add(time,interval 5 MINUTE) > NOW() ORDER BY id DESC LIMIT 0,1") or die(mysql_error());
if (!mysql_result($besoegt_idag,0)) {
    mysql_query("INSERT INTO counter (time, ip) VALUES (NOW(),'$ip')");
}

Så skal du bare tilføje hvilken side man er på.
Avatar billede Slettet bruger
10. januar 2004 - 20:37 #3
ahv : Jeg tager lige og tester det lidt
Avatar billede Slettet bruger
10. januar 2004 - 21:34 #4
Jeg kan ikke få dit til at virker på den ønskede måde :-(

Problemet er at jeg skal tælle hvor mange gange hver side på min hjemmeside bliver besøgt. Som det er nu, så counter den hver gang at man besøger en side, men den skal kun tæller 1 gang og så skal der gå 5 minutter før, at den samme IP som "tælle" den samme side igen. Min hjemmeside er bygge op på en index side, som så henter teksten fra en SQl database.
Det er lidt svært at forklar...

Jeg har tænkt på om det ikke var lettere at skrive en Session på hver side og så lad den udløbe efter 5 minutter. Og så lave et scrip som cheker om der er sessionen er der og hvis den er det, så skal den ikke tælle. Hvis Session ikke er der, så skal den skrives og der skal tælles en op på den siden, som brugeren befinder sig på.
Avatar billede ahv Nybegynder
10. januar 2004 - 22:09 #5
skriv din kode som den er nu så er det lettere for mig at rette i det.
Avatar billede Slettet bruger
10. januar 2004 - 22:20 #6
<?php

include("config/config.php");

$id = $_REQUEST["id"];  //henter hvilken side, som skal vises

// Statestik over hvilke sider som er blivet besøgt.
$data = mysql_query("UPDATE adminzone SET `count`=count+1, `last`=now() WHERE `id`='$id'") or die(mysql_error());

?>


<body>

<table border="0" align="center" cellpadding="0" cellspacing="2">
<tr>
  <td align="center" class="top"><a href="/hp/index.php?id=1"><img src="images/logo.jpg" alt="ADMINZONE . DK" border="0"></a></td>
</tr>

</table>

<table border="0" width="750" align="center" cellpadding="8" cellspacing="9">
<tr valign="top">
  <td class="menu"><br>

    <div class="text">

<?php

include("menu.php");
?>


  </td>

  <td width="630" class="main" valign="top">

<?php
$data = mysql_query("SELECT * FROM adminzone WHERE id='$id'") or die(mysql_error());
while ($row = mysql_fetch_array($data)) {


//Her skal jeg include mit indhold.
include("" . $row['page'] . "");
};

?>


Det er denne funktion, som jeg bruger nu til at tælle. Som du kan se så vil den tælle hver gang en bruger opdater siden... Hvilket ikke er meningen
Avatar billede ahv Nybegynder
10. januar 2004 - 23:06 #7
For st kører den på 'min' måde kræver det at du laver en ny række for hvert besøg, hvor du så logger tiden osv. på brugeren.
Avatar billede Slettet bruger
10. januar 2004 - 23:10 #8
Hmm. Det vil på længere sigt give en store DB. SÅ tror jeg bare jeg drop den ide. Tak for hjælpen
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