Counter Problem (MYSQL)

Johanni

Mitglied
Hallo!
Ich habe ein Counterscript im Internet gefunden doch leider funktioniert es nicht ganz. Es hat eine Reloadsperre von 30 Minuten.
Das Problem ist, dass wenn ich auf die Website von einem anderen PC aus gehe, ich die Fehlermeldung "can't insert" bekomme.
Sprich wenn ich es mit meinem Computer teste, und meine IP in die Datenbank geschrieben wird, klappt es. Gehe ich nun mit einem andren PC auf die Website kommt der beschriebene Fehler.

Das folgende script habe ich in eine counter.php gepackt und diese per include
PHP:
include("counter.php");
auf meine index.php gebracht.
counter.php
PHP:
<?php
mysql_connect("website.org","user", "pass"); 
mysql_select_db("db-test"); 

   $ip = getenv("REMOTE_ADDR");
   $my_time = time();
   $found = 0;
   
   $iplist = mysql_query("SELECT ip,time FROM iplist") OR die("can't select");
   
   $users = mysql_query("SELECT users FROM statistik") OR die("can't select");
   
   $users = mysql_fetch_assoc($users);
   $users = $users['users'];
   while($row = mysql_fetch_array($iplist))
   {
      if($ip == $row['ip'])
      {
         $time = $row['time'];
         $found = 1;
         break;
      }
   }
   
   if($found == 1 AND $my_time-$time > 1800)
   {
      $update = mysql_query("UPDATE iplist SET time='$my_time' WHERE ip='$ip'") OR die("can't update");
      $users++;
      $refresh = mysql_query("UPDATE statistik SET users='$users' WHERE id='1'") OR die("can't update");
   }
   
   if($found == 0)
   {
      $add = mysql_query("INSERT INTO iplist(ip,time) VALUES('$ip','$my_time')") OR die ("can't insert");
      $users++;
      $refresh = mysql_query("UPDATE statistik SET users='$users' WHERE id='1'") OR die("can't update");
   }
?>
<head>
</head>
<body>
</body>
</html>

In der Datenbank befinden sich zwei Tabellen, iplist und statistik
Iplist ist so aufgebaut:
id int(11)
ip varchar(20)
time varchar(20)

statistik:
id int(11)
users int(4)

Hat jemand ein Idee, was ich falsch mache?

Vielen Dank im Voraus!
Johanni
 
Statt "cant insert" auszugeben, wäre es viel wichtiger die Fehlermeldung mit [phpf]mysql_error[/phpf] auszugeben, damit du auch weißt, was nicht funktioniert.
 
also wenn ich der fehler auslese, dann bekomme ich folgendes:

Duplicate entry '0' for key 1

ich kann damit leider nichts anfangen,
aber vielen dank fuer den tipp felix jacobi!
 
Hi

ich schon. Das bedeutet, das dein Primary Key Feld einen doppelten Eintrag haben würde (was durch Primary Key aber verhindert wird). Hat das Feld denn auto_increment?
mfg
Nord!
 
nord-sued
vielen dank fuer den hinweise! hatte tatsaechlich vergessen auto-increment zu setzten.
scheint nun zu funktionieren!toll
DANKE
 
Hi

Johanni, freut mich das es nun klappt. Ich möchte dich jedoch auch noch darauf hinweisen, das hier im Forum u.a. auf eine korrekte Groß- und Kleinschreibung gesetzt wird.
mfg
Nord!
 
Zurück