Gå til innhold

Noe merkelig med telleren min =/


Anbefalte innlegg

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

Lenke til kommentar
Videoannonse
Annonse

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 av kakkle
Lenke til kommentar
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?

Lenke til kommentar

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 av kakkle
Lenke til kommentar

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 konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...