Avatar billede Slettet bruger
17. januar 2004 - 23:13 Der er 9 kommentarer og
1 løsning

Tæller i php

Er det muligt at lave en tæller som resetter hver dag i php?
Avatar billede delphimann Nybegynder
17. januar 2004 - 23:23 #1
Ja
Avatar billede Slettet bruger
17. januar 2004 - 23:24 #2
En evt. kode?
Avatar billede detox Nybegynder
18. januar 2004 - 00:03 #3
Prøv den her:

<?php
$filnavn = "count.txt";                            // Filnavn
if (!file_exists($filnavn)) touch($filnavn);    // Opret fil, hvis den mangler
$fil = fopen($filnavn, "r+");                    // Åbn fil
$antal = intval(fread($fil, 1024));                // Læs antal
// Nulstil tæller hvis sidste opdatering ikke er i dag:
if (date("z")-date("z", filemtime($filnavn))) $antal = 0;
$antal++;                                        // Tæl 1 op
fseek($fil,0);                                    // Rewind pointer
ftruncate($fil,0);                                // Truncate
fwrite($fil, $antal);                            // Skriv til fil
fclose($fil);                                    // Luk fil
echo "Du er gæst nr.: " . $antal;                // Vis reultat
?>
Avatar billede lisa99 Nybegynder
18. januar 2004 - 15:53 #4
CREATE TABLE `counter` (
`id` int(11) NOT NULL auto_increment,
`time` datetime NOT NULL default '0000-00-00 00:00:00',
`ip` varchar(20) NOT NULL default '',
PRIMARY KEY (`id`)
) TYPE=MyISAM AUTO_INCREMENT=1 ;
<body>
<?php
/* Vi connecter til databasen. */
$connection = mysql_pconnect("localhos", "bruger", "kode");
mysql_select_db("db");

/* Brugerens ip-adresse gemmes i variablen $ip. */
$ip = $_SERVER['REMOTE_ADDR'];

/* Vi tjekker om brugeren har været her indenfor de sidste 24 timer, har brugeren ikke det, lægges brugeren ind i tabellen. Man kan også tælle unikke besøgende pr. 20 min, ved at ændre 24 HOUR til 20 MINUTE osv. */
$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')");
}

/* Vi tæller antallet af brugere/rækker i tabellen */
$besoeg_ialt = mysql_query("SELECT COUNT(*) AS antal FROM counter");

/* Vi udskriver det fundne antal brugere/rækker i en echo */
echo "Der har været ".mysql_result($besoeg_ialt,0)." besøg";

/* Til sidst lukker vi forbindelsen til MySQL-databasen */
mysql_close($connection);
?>
Avatar billede Slettet bruger
18. januar 2004 - 17:59 #5
detox din virker fint. Men hvordan får jeg den til at tælle hver gang top.php bliver vist?
Det er den tæller jeg bruger nu.
Men det er en total tæller
Avatar billede detox Nybegynder
18. januar 2004 - 21:41 #6
Du kan jo lave en include af scriptet i 'top.php' og evt fjerne echo delen. Så kan du vise antal hits, der hvor du har brug for det med:

echo "Antal hit: ";
readfile('count.txt');
Avatar billede Slettet bruger
19. januar 2004 - 15:23 #7
Det forstår jeg ikke helt?
Avatar billede detox Nybegynder
19. januar 2004 - 16:47 #8
Hvis den skal tælle hver gang 'top.php' bliver vist, ligger du denne del i toppen af din 'top.php':

$filnavn = "count.txt";                            // Filnavn
if (!file_exists($filnavn)) touch($filnavn);    // Opret fil, hvis den mangler
$fil = fopen($filnavn, "r+");                    // Åbn fil
$antal = intval(fread($fil, 1024));                // Læs antal
// Nulstil tæller hvis sidste opdatering ikke er i dag:
if (date("z")-date("z", filemtime($filnavn))) $antal = 0;
$antal++;                                        // Tæl 1 op
fseek($fil,0);                                    // Rewind pointer
ftruncate($fil,0);                                // Truncate
fwrite($fil, $antal);                            // Skriv til fil
fclose($fil);                                    // Luk fil

så kan du vise resultatet, hvor du har lyst (altså evt. i en anden fil) med:

echo "Antal hits i dag: ";
readfile('count.txt');
Avatar billede Slettet bruger
19. januar 2004 - 21:44 #9
og hvad hvis count.txt ligger en mappe tilbage?

readfile('../count.txt');

eller hvordan?
Avatar billede Slettet bruger
19. januar 2004 - 21:48 #10
Nå glemt det.. Det virker. Smid et svar :)
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