Avatar billede swaq Nybegynder
24. august 2003 - 12:05 Der er 14 kommentarer og
1 løsning

Tælle klik

Noget alá: <a href="..." onClick="<? php_tælle_funktion(); ?>">

Heysan

Jeg er med på, at php er server-side, men alligevel... hvordan tæller jeg ved hjælp af php og filer, hvor mange gange en bruger klikker på et link til en anden side? Her tænkes på eksterne links.
Avatar billede schaefner Juniormester
24. august 2003 - 12:08 #1
Er det nogle links du har liggende i en database?
Avatar billede swaq Nybegynder
24. august 2003 - 12:09 #2
nope, det er blot links til andre sider i almindelige <a>-tags... Apropos cliche, så er det et af de domæner jeg har, som ikke har mysql osv... www.mereomsporten.dk
Avatar billede bryrup Nybegynder
24. august 2003 - 12:14 #3
vil du gæmme de antal gange der er trykket i en mySql db?? eller hvordan??
Avatar billede swaq Nybegynder
24. august 2003 - 12:18 #4
nope, har ingen database til rådighed, det skal gemmes i filer...

Se her: mereomsporten.dk/?obj=page6, ideen er, at klubberne gerne vil vide hvor mange besøgende de har fået gennem denne side...
Avatar billede swaq Nybegynder
24. august 2003 - 12:19 #5
Avatar billede jakoba Nybegynder
24. august 2003 - 12:38 #6
istedetfor:
    <a href="hvorhen.html"> tekst </a>
skriver du:
    <a href="klikteller.php?dest=hvorhen.html"> tekst </a>

og så laver du e lille fil "klikteller.php" til at registrere at der blev klikket og redirecte brugeren til den fil:

<?php
if ( isset( $_GET['dest'] ) ) {
    $dest = $_GET['dest'];    // den side der skal vises når vi har talt
} else {
    $dest = "fejlside.php?fra=$HTTP_REFERER";    // side der forteller klikteller blev brugt forkert
    header( "Location: $dest" );
    exit;
}
$tellefilnavn = "tel_" .ereg_replace( "\W", "_", $dest ) .".txt";
    // vi teller op i en fil der hedder "tel_hvorhen_html.txt"
    // det kan gøres på masser af måder, database, fællesfil for alle tellere, osv.
$filpointer = fopen( $tellerfilnavn, "r+" );  // NB: "r+"
if( feof( $filpointer ) ) {  // det er en ny fil
    $tal = 1;
} else {            // der står noget i filen allerede
    $tal = fread( $filpointer, 1000 ) +1;  // læg en til det der står
    rewind( $filpointer );                // og gør klar til at skrive den ny værdi
}
fwrite( $filpointer, $tal );
fclose( $filpointer );

header( "Location: $dest" );
?>

mvh JakobA
Avatar billede swaq Nybegynder
24. august 2003 - 12:40 #7
Genialt :O)

Takker!!!
Avatar billede swaq Nybegynder
24. august 2003 - 13:15 #8
Oops... der er dog et lille problem...
Warning: feof(): supplied argument is not a valid stream resource in /STORE/mereomsporten_dk/public_html/counter.php on line 17

Warning: fread(): supplied argument is not a valid stream resource in /STORE/mereomsporten_dk/public_html/counter.php on line 20

Warning: rewind(): supplied argument is not a valid stream resource in /STORE/mereomsporten_dk/public_html/counter.php on line 21

Warning: fwrite(): supplied argument is not a valid stream resource in /STORE/mereomsporten_dk/public_html/counter.php on line 23

Warning: fclose(): supplied argument is not a valid stream resource in /STORE/mereomsporten_dk/public_html/counter.php on line 24

Kan det hænge sammen med at filerne ikke eksisterer i forvejen??? Jeg har lavet CHMOD=777 i det lib, hvor jeg vil have filerne...
Avatar billede swaq Nybegynder
24. august 2003 - 13:15 #9
Selvom det 'kun' er warnings, så bliver der ikke oprettet nogen filer...
Avatar billede swaq Nybegynder
24. august 2003 - 13:27 #10
Yes, har fundet fejlen!
$filpointer = fopen( $tellerfilnavn, "r+" );  // NB: "r+"

skal være:
$filpointer = fopen( $tellefilnavn, "r+" );  // NB: "r+"
Avatar billede jakoba Nybegynder
24. august 2003 - 13:30 #11
Det ser meget ud somom det kald til fopen går galt.
en quick-fix kunne være at oprette tellerfilen manuelt og skrive 0 i den. men det er klumret at skulle gøre for alle links.

Ahh. jeg laver en variabel der hedder $tellefilnavn (uden r) men prøver at åbne med en der hedder  $tellerfilnavn (med r). prøv at fjerne det r.
Avatar billede swaq Nybegynder
24. august 2003 - 14:53 #12
Jep, problemet er at det giver mest mening at bruge 'a+' fremfor 'r+' når filen ikke eksisterer. Det giver tilgengæld problemer når filen så endelig findes. Bruges a+ når filen eksisterer sker der blot det at filen indeholder ligeså mange et-taller som der har være klik...
Avatar billede swaq Nybegynder
24. august 2003 - 15:42 #13
Stik mig lige et svar Jakob, så du ka' få dine points :O)
Avatar billede jakoba Nybegynder
24. august 2003 - 18:32 #14
ok
Avatar billede jakoba Nybegynder
24. august 2003 - 18:34 #15
PS: "a+" burde ikke specielt være bedre end "r+". Hvis det er kan du evt starte med en rewind før du tester for end of file.
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