Het idee:
Een counter maken. Eentje die én het aantal totale hits bijhoudt, én tegelijkertijd het aantal unieke bezoekers bijhoudt. Gebaseerd op mySQL.
Wat heb ik tot nu toe?
Het 'totale hits bijhouden' gebeuren werkt. Dit is ook niet moeilijk dus...
Ok, dus ik denk, op naar unieke visitors.
Ik heb in mijn achterhoofd onthouden dat ik liever niet teveel rijen in mijn tabelletje krijg, dat vind ik vervelend. Bovendien wou ik zowel de unieke visitors als het totale hits in één tabel, het zou onzin zijn om dan ook iedere hit in een rij te zetten...
Dus, de mySQL tabel:
Dit is hoe ik de data uit de tabel lees:
Dan het aantal unieke bezoekers:
Hij haalt de gegevens op uit de rij 'visitors'. De gegevens in de rij 'visitors' bestaan uit IP-adressen, gescheiden door een -. Met behulp van de split() functie verwijder ik de streepjes ertussen, en met behulp van list() stop ik ze in aparte variabelen.
Nog enige toelichting:
Bij de eerste update-query plakt hij dus het IP-adres van de bezoeker, met een '-' eraan vastgeplakt, in de database, vast aan de al ingevoerde IP-adressen.
En verder?
Nu kom ik bij een probleem terecht. Op deze manier, moet ik iedere keer als er weer een unieke bezoeker op mijn site komt, bij list() weer een extra variabele typen, en het uploaden. Niet leuk, niet handig dus!
Een tweede probleem waar ik op stuitte, was dat ik niet wist/weet hoe ik de IP-adressen moet gaan tellen.
Nu vroeg ik mij af, is er niet een manier, om éérst het aantal unieke bezoekers te tellen (ná het verwijderen van '-' óf ervóór), en dan met 'iets' ervoor te zorgen dat hij bij list() begint met $ip1, en eindigt bij $ip*, met telkens stappen van 1 ertussen, waarbij * dan het aantal IP-adressen inhoudt (net zoiets als bij rand(), dat je een begin en een eindgetal moet kiezen).
Zou ik misschien het aantal '-' moeten gaan tellen? Hoe dan? Voor zover ik weet kan dit niet met de count() functie...
Nogmaals kort wat ik wil: ik wil het aantal IP-adressen tellen, en weten hoe ik dat list() makkelijker kan gebruiken
Is wat ik wil überhaupt wel mogelijk, of kan ik tóch beter ieder IP-adres in een andere rij stoppen?
Een counter maken. Eentje die én het aantal totale hits bijhoudt, én tegelijkertijd het aantal unieke bezoekers bijhoudt. Gebaseerd op mySQL.
Wat heb ik tot nu toe?
Het 'totale hits bijhouden' gebeuren werkt. Dit is ook niet moeilijk dus...
Ok, dus ik denk, op naar unieke visitors.
Ik heb in mijn achterhoofd onthouden dat ik liever niet teveel rijen in mijn tabelletje krijg, dat vind ik vervelend. Bovendien wou ik zowel de unieke visitors als het totale hits in één tabel, het zou onzin zijn om dan ook iedere hit in een rij te zetten...
Dus, de mySQL tabel:
code:
Simpel, en klein, zoals ik het wil dus. 1
| CREATE TABLE counter ( hits int(100) NOT NULL, visitors longtext NOT NULL) |
Dit is hoe ik de data uit de tabel lees:
PHP:
Dit werkt ook allemaal, geen probleem.1
2
3
| $select= "SELECT * FROM counter"; $result = mysql_query($select); $row = mysql_fetch_array($result); |
Dan het aantal unieke bezoekers:
PHP:
Wat hier dus gebeurt:1
2
3
4
5
6
7
8
9
10
11
12
| $visitors = $row['visitors']; list($ip1, $ip2) = split('[-]', $visitors); echo "$ip1, $ip2"; $ip = $REMOTE_ADDR; $ip .= "-"; $add = $visitors; $add .= $ip; $query = "UPDATE counter SET visitors='$add'"; mysql_query($query) or die(mysql_error()); |
Hij haalt de gegevens op uit de rij 'visitors'. De gegevens in de rij 'visitors' bestaan uit IP-adressen, gescheiden door een -. Met behulp van de split() functie verwijder ik de streepjes ertussen, en met behulp van list() stop ik ze in aparte variabelen.
Nog enige toelichting:
Bij de eerste update-query plakt hij dus het IP-adres van de bezoeker, met een '-' eraan vastgeplakt, in de database, vast aan de al ingevoerde IP-adressen.
En verder?
Nu kom ik bij een probleem terecht. Op deze manier, moet ik iedere keer als er weer een unieke bezoeker op mijn site komt, bij list() weer een extra variabele typen, en het uploaden. Niet leuk, niet handig dus!
Een tweede probleem waar ik op stuitte, was dat ik niet wist/weet hoe ik de IP-adressen moet gaan tellen.
Nu vroeg ik mij af, is er niet een manier, om éérst het aantal unieke bezoekers te tellen (ná het verwijderen van '-' óf ervóór), en dan met 'iets' ervoor te zorgen dat hij bij list() begint met $ip1, en eindigt bij $ip*, met telkens stappen van 1 ertussen, waarbij * dan het aantal IP-adressen inhoudt (net zoiets als bij rand(), dat je een begin en een eindgetal moet kiezen).
Zou ik misschien het aantal '-' moeten gaan tellen? Hoe dan? Voor zover ik weet kan dit niet met de count() functie...
Nogmaals kort wat ik wil: ik wil het aantal IP-adressen tellen, en weten hoe ik dat list() makkelijker kan gebruiken
Is wat ik wil überhaupt wel mogelijk, of kan ik tóch beter ieder IP-adres in een andere rij stoppen?