Anders Moen Skrevet 8. februar 2007 Skrevet 8. februar 2007 Jeg prøvde å lage en counter i stad, og det fungerte jo ikke så alt for bra merka jeg. Hvis dere vil se hvordan den blir, gå hit (tallene som står nede der er telleren) Her er koden jeg bruker: <?php $con = mysql_connect("localhost","brukernavn","passord"); mysql_select_db ("db_navn",$con) or die ("ERROR!"); $ip = $_SERVER['REMOTE_ADDR']; $query = mysql_query("INSERT INTO counter (ip) VALUES ('$ip')"); if($query){ echo(" "); } ?> <?php $con = mysql_connect("localhost","brukernavn","passord"); if (!$con) { die('Could not connect: ' . mysql_error()); } mysql_select_db("db_navn, $con); $result = mysql_query("SELECT ip FROM counter"); while($row = mysql_fetch_array($result)) { echo "" . mysql_num_rows($result) . ""; } mysql_close($con); ?> `id` primary key og auto_increment `ip` text IP'en og ID blir helt fint lagt til i databasen, men problemet kommer på utskriften av hvor mange IP'er som ligger i databasen...første ID funker, så blir det bare masse rare tall. Sjekk selv her
kakkle Skrevet 8. februar 2007 Skrevet 8. februar 2007 (endret) Det er fordi du skriver ut antall ipadresser i tabellen like mange ganger som du har ipadresser i tabellen (while løkken). Fjern While løkken... Dersom du vil at den bare skal telle den aktuelle ipadressen: SELECT ip FROM counter WHERE ip='$ip' Kanskje ? EDIT: Dòg så er det vel også bedre å legge til et felt i databasen som teller antall ganger en ipadresse har beøkt siden ? Dersom ipadressen finnes i databasen, legger du til 1 i tellerfeltet. Hvis ikke, så legger du inn ipadressen i tabellen, og setter teller til 1. Endret 8. februar 2007 av kakkle
Anders Moen Skrevet 8. februar 2007 Forfatter Skrevet 8. februar 2007 Det er fordi du skriver ut antall ipadresser i tabellen like mange ganger som du har ipadresser i tabellen (while løkken). Fjern While løkken... Dersom du vil at den bare skal telle den aktuelle ipadressen: SELECT ip FROM counter WHERE ip='$ip' Kanskje ? EDIT: Dòg så er det vel også bedre å legge til et felt i databasen som teller antall ganger en ipadresse har beøkt siden ? Dersom ipadressen finnes i databasen, legger du til 1 i tellerfeltet. Hvis ikke, så legger du inn ipadressen i tabellen, og setter teller til 1. 7902846[/snapback] SELECT koden fungerte ikke noe bedre. Hvordan gjør jeg det som står i din edit da?
kakkle Skrevet 8. februar 2007 Skrevet 8. februar 2007 (endret) Det du må gjøre er å fjerne hele while løkken slik at koden blir slik: ... mysql_select_db("db_navn, $con); $result = mysql_query("SELECT ip FROM counter"); echo "" . mysql_num_rows($result) . ""; mysql_close($con); EDIT: Også var det editen min da. Der du legger inn ipadressen: <?php $con = mysql_connect("localhost","brukernavn","passord"); mysql_select_db ("db_navn",$con) or die ("ERROR!"); $ip = $_SERVER['REMOTE_ADDR']; $sql = "SELECT * FROM counter WHERE ip='$ip'"; $res = mysql_query($sql) or die("SQL ERROR: $sql<br>".mysql_error()); $hits = mysql_num_rows($res) // Antall rader med den ipadressen if($hits == 0) { // Ip adressen finnes ikke fra før $query = mysql_query("INSERT INTO counter (ip, teller) VALUES ('$ip', 1)"); or die (mysql_error()); } else { // ip adressen finnes ikke query = mysql_query("UPDATE counter SET teller=teller+1 WHERE ip='$ip'") or die(mysql_error()); } ?> feltet teller i databasen må være et nummer. Endret 8. februar 2007 av kakkle
kakkle Skrevet 8. februar 2007 Skrevet 8. februar 2007 Se svaret mitt i den tråden du svarte på om statistikk ... Mangler litt i scriptet ditt.
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å