JanThore Skrevet 27. juni 2003 Del Skrevet 27. juni 2003 Hei sitter med en liten utfordring...som jeg kunne behøvd litt innspill til. Jeg skal lage en "topp 10" over de mest besøkte sidene mine. Jeg logger all besøk på alle sidene mine i en tekst-fil med ip, tid, scriptnavn og host. I tekst-filen er infoen delt med mellomrom strek mellomrom ( - ). Denne filen henter jeg inn i ett array. Bruker for($i=0; $i < count($loggfil); $i++){ list($fil_ip,$fil_tid,$fil_side,$fil_host)= split (" - ", $loggfil[$i], 4); array_push($besokte, $fil_side); } for å lage et nytt array for å inneholde kun info om siden det var besøkt. Men så begynner problemet.. Får å kunne lage en "topp 10" så må jeg plusse samme de som evn. er like i denne tabellen. Dette gjør egentlig PHP's funksjon array_count_values. Utskriften er leslig men egner seg ikke for en webside da den blir seende ut noe som dette: Array ( [1] => 2 [hello] => 2 [world] => 1 ) Noen som vet en metode for å få denne informasjonen ut på den metoden man selv ønsker? Tar i mot alle tips. Lenke til kommentar
BlueEAGLE Skrevet 27. juni 2003 Del Skrevet 27. juni 2003 Her har du et tips: Filbehandlingsoperasjoner er realtivt trege, så det å parse loggen hver eneste gang noen logger på vil bruke århundrer når du har 10000+ besøkende per side. Jeg anbefaler at du har en egen fil som heter teller.cnt eller noe og inkrementere antallet besøkende i den. Men for å pengjøre utskriften slik du ville så kan du <table> <tr><td>Side</td><td>Besøkende</td></tr> <? foreach($MinArray as $Key => $Value) echo "<tr><td>$Key</td><td>$Value</td></tr>"; ?> </table> Lenke til kommentar
JanThore Skrevet 27. juni 2003 Forfatter Del Skrevet 27. juni 2003 Her har du et tips: Filbehandlingsoperasjoner er realtivt trege, så det å parse loggen hver eneste gang noen logger på vil bruke århundrer når du har 10000+ besøkende per side. Jeg anbefaler at du har en egen fil som heter teller.cnt eller noe og inkrementere antallet besøkende i den. Men for å pengjøre utskriften slik du ville så kan du <table> <tr><td>Side</td><td>Besøkende</td></tr> <? foreach($MinArray as $Key => $Value) echo "<tr><td>$Key</td><td>$Value</td></tr>"; ?> </table> Hei Denne funksjonen her skjer bare inne i admin scriptet. Det eneste som skjer ved logging er at den legger til en linje i tekst fila. Prøvde den funksjonen du beskrev og det funket men ikke helt på den måten jeg ønsket... For at jeg bruker $tellet = print_r(array_count_values ($besokte),true); for å telle sammen like navn i det arrayet $besokte. Den funksjonen du skrev gikk ikke på $tellet men den gikk på $besokte. Men $besokte er ikke tellet, der står alle sidene under hverandre.Hvis du skjønner. For det den foreach ga meg som utskrift var: 0 /error.php 1 /error.php 2 /gjestebok/index.php 3 /venner/ 4 /error.php 5 /error.php og Ønsker å ha: /error.php => 4 /gjestebok/index.php => 1 /venner/ => 1 Det blir nesten slik med: print_r(array_count_values ($besokte),true) men den skriver ut med Array (), og uten <br> teksten. Det som ikke er pent. Array ( [1] => 2 [hello] => 2 [world] => 1 ) Med vennlig hilsen Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå