• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

PHP - MySQL Counter

bodo92

Aktives Mitglied
Hallo,

ich habe seit Ewigkeiten ein Problem mit meinem Counter auf meiner Website:
Freiwillige Feuerwehr Markt Emskirchen

Das Counter Script ist folgendes:
PHP:
<?php


if (! isset($_SERVER['HTTP_X_FORWARDED_FOR'])) {

$ip = $_SERVER['REMOTE_ADDR'];

} else {

$ip = $_SERVER['HTTP_X_FORWARDED_FOR'];

}


$tag = date("d.m.Y");

$zeit = date("H:i");


echo "Ihre IP: " . $ip . " | Datum: " . $tag . " | Uhrzeit: " . $zeit;


require("../include/mysql.connect.php");

$result=mysql_query("SELECT * FROM `counter` WHERE `ip` = '". $ip ."' AND `datum` = '". $tag ."'") or die(mysql_error());

$num=mysql_numrows($result);


if ($num = "0") {


mysql_query("

    INSERT INTO `counter` 

    (

    datum, uhrzeit, ip

    ) VALUES (

    '". $tag ."', 

    '". $zeit ."', 

    '". $ip ."'

    )

") or mysql_error();


}


mysql_close();


?>

Vielleicht seht ihr den Fehler..

Dankeschön im Vorraus
 
Zuletzt bearbeitet:
Ungetestet:
PHP:
 <?php
   if (! isset($_SERVER['HTTP_X_FORWARDED_FOR'])) 
      $ip = $_SERVER['REMOTE_ADDR'];
   else
      $ip = $_SERVER['HTTP_X_FORWARDED_FOR'];

   $tag = date("d.m.Y");
   $zeit = date("H:i");

   echo "Ihre IP: " . $ip . " | Datum: " . $tag . " | Uhrzeit: " . $zeit;

   require("../include/mysql.connect.php");
 
   $query = "Select
                count(*)
              FROM 
                `counter` 
              WHERE 
                `ip` = '$ip' 
               AND 
                `datum`='$tag'";

   $result = mysql_query($query)
      or die(mysql_error());

   $num = mysql_result($result, 0);

   if ($num == 0) 
   {
      $query = "INSERT 
                 INTO 
                   `counter`
                 set
                   `datum`='$tag',
                   `uhrzeit`='$zeit',
                   `ip`='$ip'";  

     mysql_query($query)
        or die(mysql_error());                   

  }

  mysql_close();
?>
 
Hi,

Du machst hier eine Zuweisung keinen Vergleich. (Wahrscheinlich hast du einfach aus versehen = statt == geschrieben)
Du weist also $num den Wert "0" zu und dieser wird immer zu falsch ausgewertet.
PHP:
if ($num = "0") {

Edit: im Code vom Post vorher ist das Problem erkannt und ausgebessert worden. War zu langsam ;)
 
Jo da kann ich bdt nur zustimmen. Er hat gleich noch andere Sachen richtig gestellt / verbessert.

Nur das DB-Query stimmt bei dir (bdt) nicht ganz oder?

$query = "INSERT
INTO
`counter`
set
`datum`='
$tag',
`uhrzeit`='
$zeit',
`ip`='
$ip'";

Das set benutzt man doch bei UPDATE queries, nicht bei INSERT, wenn ich jetzt nicht komplett falsch liege.
 
Das set benutzt man doch bei UPDATE queries, nicht bei INSERT, wenn ich jetzt nicht komplett falsch liege.
Da liegst du allerdings falsch, das ist auch beim Insert erlaubt, was ich auch deutlich übersichtlicher finde. ;)

Außerdem sind die Daten Datum und Uhrzeit eigentlich Quatsch, wozu gibt es den Datentyp datetime?
 
Ah danke fuer die Info bdt. Mir ist das noch nirgends begenet.

Ich hab das mal grade gegoogled.
Es ist jedoch so, dass die Variante mit SET nur mit MySQL funktioniert und nicht offizieller SQL-Standard ist.

Das aendert jedoch nichts dran, dass es in dem Zusammenhang richtig ist. ;)
 
Zurück
Oben