Avatar billede tupsy Nybegynder
19. februar 2001 - 00:44 Der er 27 kommentarer og
1 løsning

Klik tæller, med txt fil..

Jeg har en række billeder som er lavet som link..
Linket kunne ser f.eks. sådan ud : www.minside.dk/taeller.php3?Klik_id=20
Hvert billede har så hver deres id nr.
Hvordan laver jeg det sådan at hver gang der er en der trykker på et billede, bliver dets id nr brugt (på tealler siden) til at åbne en txt fil, finde billedets id i filen og ligge 1 til en tæller ud for dets id..
Altså en txt fil hvor man kan gå ind og se en kliktæller på alle mine billeder..

Hmm, blev vist skrevet lidt kringlet, men håber I ved hvad jeg mener..
Ellers spørg bare..

Tupsy!!
Avatar billede seider Nybegynder
19. februar 2001 - 00:56 #1
du kan få min 2 sec !
Avatar billede no_doubt Nybegynder
19. februar 2001 - 01:07 #2
<?
    $ip = getenv(\"REMOTE_ADDR\");
    $fil = \"count.txt\";
    $f = file($fil);
    $antal = count($f);
    $yest = time() - 86400;
    $o = \"0\";
    $xidag = \"f\";
    $idag = time();
    $idag2 = date(\"Y F d, H:i\");
        while ($antal > $o) {
            $streg = explode(\" \", $f[$o]);
                if ($ip == $streg[0]) {
                $x = \"t\";
                    if ($streg[1] > $yest) {
                        $xidag = \"t\";
                    }
                }
            $o++;
        }
        if ($xidag == \"f\") {
            $logg = fopen(\"$fil\", \"a\");
            fputs ($logg, \"$ip $idag, $idag2\\n\");
           
            fclose ($logg);
        }
    $f = file($fil);
    $antal = count($f);
        if ($x == \"t\") {
// Hvis man har været der før...
            print \"Der har været $antal brugere på siden.\";
        }
        else {
            print \"du har været$antal gange på siden.\";
        }
?>

Denne virker hvis billederne ligger på hver sin side.
Avatar billede seider Nybegynder
19. februar 2001 - 01:09 #3
<%
    set fs = createobject(\"scripting.filesystemobject\")
    set file = fs.opentextfile(server.mappath(\"aspcount.dat\"))
    visitorcount = (file.readline)
    if session(\"visitorcount\") = \"\" then
        session(\"visitorcount\") = visitorcount
        visitorcount = (cint (visitorcount)) + 1
        file.close
        set file = fs.createtextfile(server.mappath(\"/jseide/dba/aspcount.dat\"),true)
        file.writeline(visitorcount)
        response.write (\"&nbsp&nbsp\" & visitorcount )
    else response.write (\"&nbsp&nbsp\" & visitorcount & \" <br> opdateres kun engang !<br> \" )
    end if
    file.close
    set fs = nothing
%>

Den er godt knok lavet i ASP, men den kan du jo bare konvertere
Avatar billede no_doubt Nybegynder
19. februar 2001 - 01:11 #4
BARE konvertere...det er nemmere med min bare smække den kode på en side og en count fil (txt) og så linke så viser den antal hits men dit var ikke engang php men okay det er op yil tupsy
Avatar billede seider Nybegynder
19. februar 2001 - 01:13 #5
Næ jeg så det først da jeg havde indsat den, jeg havde ikke lige bemærket at det var PHP, sorry !

//Seider
Avatar billede no_doubt Nybegynder
19. februar 2001 - 01:15 #6
Han overlever som nok *s*
Avatar billede seider Nybegynder
19. februar 2001 - 01:19 #7
Ja det håber jeg da godt nok også [:)
Avatar billede no_doubt Nybegynder
19. februar 2001 - 02:08 #8
Noget du kunne bruge tupsy ?
Avatar billede mkelle1 Nybegynder
19. februar 2001 - 02:12 #9
Hej Tupsy

Så vidt jeg kan læse af din beskrivelse kan du nøjes med følgende:

<?
$file=\"count.txt\";
$filearray=file($file);
$filearray[($klik_id-1)]=filearray[($klik_id-1)]+1;
$fp=fopen(\"count.txt\",\"w\");
for ($i=0;$i<=(count($filearray)-1);$i++)
{
fwrite($fp,$filearray[$i]);
}
fclose($fp);
?>

Hilsen

Mads
Avatar billede no_doubt Nybegynder
19. februar 2001 - 02:17 #10
Skal lige siges at min ikke kan spammes med hits pga. ip loggen og data valideringen.
Avatar billede tupsy Nybegynder
19. februar 2001 - 03:30 #11
Ja så kunne jeg være her igen.. :-)
no doubt>>>Billederne ligger flere på en side..

Mads>>>Virker din meget simple metode lige meget hvor mange billeder jeg har??
Opretter den selv nye id\'er hvis jeg ligger flere billeder på?? (Ikke nødvendigt, men skal bare vide om jeg selv skal lave en txt fil ´med alle id\'er først.

Tupsy!!
Avatar billede tupsy Nybegynder
19. februar 2001 - 07:17 #12
mkelle1>>>Så har jeg forsøgt mig med dit script..
Men det virker ikke...
Den kommer med en fejl.. :-(

Altså, hvert billede har et link-id nr. F.eks.
www.minside.dk/taellerside.php3?klik_id=21

Det scriptet skulle kunne er så :
Bruge en txt fil som tæller..
Altså så man kan åbne txt filen og se at f.eks. id nr 21 har haft 26 klik.
id nr 22 har haft 33 klik
o.s.v.

Jeg tror også at det er det dit script skulle kunne, men umiddelbart virker det ikke.. :-(

Håber du/I gider at hjælpe???

Tupsy!!
Avatar billede tupsy Nybegynder
19. februar 2001 - 07:20 #13
Den melder fejl i linie 35.
Og på min side er det = denne linie

$filearray=file($file);

Tupsy!!
Avatar billede no_doubt Nybegynder
19. februar 2001 - 12:12 #14
Nå okay
Avatar billede mkelle1 Nybegynder
19. februar 2001 - 13:22 #15
Hej Tupsy!

Det tog lige lidt tid, for de linieskift drillede mig. Sådan som den virker nu skrives kun et tal for hvormange hits det enkelte billlede har haft, ikke billedets navn, så tælleren for klik_id=18 står på den attende linie, eller kan hentes via

$filearray=file(\"count.txt\");
echo $filearray[($klik_id-1)];

Men her er scriptet, det virker, jeg har testet det. Når du gør det første gang og filen ikke findes får du en WARNING, men den betyder ikke noget.

<?
$file=\"count.txt\";
$filearray=file($file);
//af en eller anden grund returnerer count værdien 1, når den ikke kan åbne filen med file()
if (count($filearray)==1)
{
for ($i=0;$i<=20;$i++)
    {
    //hvis filen ikke existerer fyldes array\'et med 0\'er efterfulgt af linieskift
    $filearray[$i]=\"0\\n\";
    }
}

//arrayet opdateres for det modtagne klik_id og efterfølges af et linieskift
$filearray[($klik_id-1)]=($filearray[($klik_id-1)]+1).\"\\n\";
$fp=fopen($file,\"w\");
for ($i=0;$i<=(count($filearray)-1);$i++)
{
//tallen (og linieskiftene) fra arrayet indlæses i filen
fwrite($fp,$filearray[$i]);
}
fclose($fp);
?>

Hilsen

Mads
Avatar billede tupsy Nybegynder
19. februar 2001 - 16:31 #16
Kanont.... Men jeg ville da også MEGET gerne have det sådan at den skrev id nr. ud for tallet..
Kan man ikke bare sætte $klik_id ind der hvor den skriver til filen et eller andet sted???

Tupsy!!
Avatar billede mkelle1 Nybegynder
19. februar 2001 - 17:37 #17
Hej Tupsy

Her er den så, hvor den skrive ID nummeret med

<?
$file=\"count.txt\";
$filearray=file($file);
//af en eller anden grund returnerer count værdien 1, når den ikke kan åbne filen med file()
if (count($filearray)==1)
{
for ($i=0;$i<=20;$i++)
    {
    $j=$i+1;
    $ID=\"ID=$j\\n\";
    $filearray[$i*2]=$ID;
    $filearray[($i*2)+1]=\"0\\n\";
    }
}

//arrayet opdateres for det modtagne klik_id og efterfølges af et linieskift
$filearray[(($klik_id*2)-1)]=($filearray[(($klik_id*2)-1)]+1).\"\\n\";
$fp=fopen($file,\"w\");
for ($i=0;$i<=(count($filearray)-1);$i++)
{
//tallen (og linieskiftene) fra arrayet indlæses i filen
fwrite($fp,$filearray[$i]);
}
fclose($fp);
?>

Mads
Avatar billede tupsy Nybegynder
19. februar 2001 - 20:18 #18
Sorry Mads...
Den kan jeg slet ikke få til at virke...
Den tæller ikke engang... :-(

Og lige til den første tæller..
Er den kun lavet til at kunne tage 21 billeder??

Tupsy!!
Avatar billede tupsy Nybegynder
19. februar 2001 - 20:26 #19
Nææ, den kan tage lige så mange billeder det skulle være.. Den opretter bare kun 21 linier den første gang man bruger den..
Jeg skulle bare lave en txt fil med en lang række 0\'er i så virkede det..

Men tæller 2 virker stadig ikke...
Gider du/I stadig at kikke på det??

Tupsy!!
Avatar billede tupsy Nybegynder
19. februar 2001 - 20:55 #20
Er det ikke muligt bare at indsætte £klik_id et eller andet sted så id nr. som den har fra \"klik siden\" bare bliver skrevet med ind i txt filen sammen med resultatet af kliktælleren??

Tupsy!!
Avatar billede mkelle1 Nybegynder
19. februar 2001 - 22:34 #21
Hej Tupsy!

Er lige kommet hjem.
1. Jo den er lavet til 21, men det handler jo kun om at sætte de tal til den størrelse du tror du kan hænde at nå op på, f.ex. 30 eller 50 eller 100, hvad ved jeg.
2. Du skal slette den gamle \"count.txt\" når du skal bruge det nye script, ellers er jeg ikke sikker på at du kan få det til at virke.
3. Hvis du bare vil registerer klik_id\'er efterhånden som de opstår og de evt ikke engang kommer i rækkefølge, ja, så er det ved at blive besværligt at gøre i en .txt fil, så er det meget lettere at lave i en database (hvilket det under alle omstændigheder ville være)

Men altså, i den første \'for\'-sætning sætter du tallet til det du maximalt forventer. Du sletter count.txt filen og så skulle det køre. Det kan godt raffineres yderligere, men så bliver det lettere at lave i en db.

Mads
Avatar billede r_brejnholt Nybegynder
19. februar 2001 - 23:32 #22
- hvis du har alt for mange kliks på en gang, virker den garanteret ikke :)
Jeg har oplevet at min tekstbaserede tæller bliver nulstillet engang imellem - jeg tror det er hvis der er to brugere der henter filen på nøjagtig samme tid...
Avatar billede tupsy Nybegynder
20. februar 2001 - 01:35 #23
Mads>>>>
Det med at slette count.txt vil jeg lige prøve når jeg kommer hjem... (Sidder på jobbet nu.. :-])

Og ja, jeg ved at det nok ville være lættere at lave i en DB, men jeg har ikke et hotel der understøtter MYSQL.. Øv øv...

Jeg kan jo sagtens lave count.txt som en fil der indeholder alle id\'er fra starten af.. Bare jeg for den rigtige tælling ud for de rigtige id\'er..
Men jeg prøver lige tæller 2 når jeg kommer hjem..

Tupsy!!

Avatar billede mkelle1 Nybegynder
20. februar 2001 - 01:47 #24
r_breinholt har fuldstændig ret i at hvis to åbner filen samtidigt er der et problem. Det burde ikke nulstille den men kun et klik bliver talt med. Hvis du har så mange klik at det er et reelt problem bliver du nok nødt til at skifte til et hotel med en database.

Mads
Avatar billede tupsy Nybegynder
20. februar 2001 - 02:03 #25
Jeg tror nu ikke det bliver til et stort problem..

Bare jeg får det til at virke, så er jeg en glad mand.. :-)

Tupsy!!
Avatar billede tupsy Nybegynder
20. februar 2001 - 15:57 #26
Det var bare en sletning af count.txt der skulle til, så virker tæller 2..
1000 atk for hjælpen... :]

Tupsy!!
Avatar billede tupsy Nybegynder
22. februar 2001 - 16:13 #27
Og så lige et tillægs ?..
Kan man lave et script der går ind ov kikker alle id\'er igennem i count.txt og viser de 5 eller 10 id\'er med flest klik??
Altså en top 5 eller top 10 visning..

Point gives se\'følgelig gerne..

Tupsy!!
Avatar billede tupsy Nybegynder
27. februar 2001 - 08:05 #28
MADS!!!
Kan du hjælpe akut??

Det viser sig at tælleren BLIVER nulstillet ved overbelastning...

Kan man lave det sådan at man kun kan klikke 1 gang om dagen??

Tupsy!!

\"Mange\" point gives...
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