Counter Problem :(

2Pac

Erfahrenes Mitglied
Hallo Leute!
Ich habe einen standard counter programmiert. Diesen habe ich dann erweitert mit der Funktion Besucher heute und Besucher gestern. Aber jetzt hab ich nen Problem. Ich lese ja immer das datum ein.Und ab und zu schreibt er dann einfach statt 12.6.2003 12.06.2003 könnt sich das mal wer angucken?

Datum bestimmen:
PHP:
$heute = getdate();
$tag = $heute['mday'];
$monat = $heute['mon'];
$jahr = $heute['year'];
$stunde = $heute['hours'];
$minute = $heute['minutes'];
$sekunde = $heute['seconds'];

Der Counter(nur die Zusatzfunktion):
PHP:
    $DatabaseName = "";
    $DbHostName = "";
    $DbUserName = "";
    $DbPassWord = "";
    $db = mysql_connect("$DbHostName", "$DbUserName", "$DbPassWord");
    if (ip_suche($REMOTE_ADDR)) //ip_suche überprüft ob ein Reload forlieg falls ja gibt
    {  
     $zahl = implode("",file("zahl2.txt"));  // sie false zurück und der Seitenaufruf
     echo "<b>".++$zahl."<b><br>";         //  wird nicht mitgezählt
     $dat = fopen("zahl2.txt","wb");
     fwrite($dat,"$zahl");
     fclose($dat);

     $var = "$tag.$monat.$jahr";
     $res = mysql_db_query("$DatabaseName", "select datum,user FROM counter where datum='$var'");
     $num = mysql_num_rows($res);
     if ($num == 0)
     {
      $du = 1;
      $sqlab = "insert counter";
      $sqlab .= "(datum, user) values";
      $sqlab .= "('$var', '$du')";
      mysql_db_query("$DatabaseName", $sqlab);
      echo "<li>Besucher heute: $du</li>";
     }
     if ($num != 0)
     {
      $sqlab = "update counter set user=user+1 where datum='$var'";
      mysql_db_query("$DatabaseName", $sqlab);
      $result = mysql_db_query("$DatabaseName", "select datum,user FROM counter where datum='$var'");
      while($data = mysql_fetch_row($result))
      {
       $du = $data[1];
       echo "<li>Besucher heute: $du</li>";
      }
     }
    }
    else 
    {
     $zahl = implode("",file("zahl2.txt"));
     echo "<b>".$zahl."<b><br>";
     $var = "$tag.$monat.$jahr";
     $res = mysql_db_query("$DatabaseName", "select datum,user FROM counter where datum='$var'");
     $num = mysql_num_rows($res);
     if ($num == 0)
     {
      $du = 0;
      $sqlab = "insert counter";
      $sqlab .= "(datum, user) values";
      $sqlab .= "('$var', '$du')";
      mysql_db_query("$DatabaseName", $sqlab);
      echo "<li>Besucher heute: $du</li>";
     }
     if ($num != 0)
     {
      $result = mysql_db_query("$DatabaseName", "select datum,user FROM counter where datum='$var'");
      while($data = mysql_fetch_row($result))
      {
       $du = $data[1];
       echo "<li>Besucher heute: $du</li>";
      }
     }     
    }
Thx im Voraus
 
gibt es vielleicht ne möglichkeit die zeit als integerzahl raus zu finden also ich mein jetzt aber nur tag monat jahr nicht noch minuten sekunden und stunden??? weil das gibts doch glaub ich so das man dann nen timestamp machen kann ...
 
also ich habe es jetzt gemacht das ich den code so gemacht habe:
PHP:
    $DatabaseName = "daten";
    $DbHostName = "daten";
    $DbUserName = "daten";
    $DbPassWord = "daten";
    $heute2 = time();
    $var = date("j.n.y", $heute2);
    $db = mysql_connect("$DbHostName", "$DbUserName", "$DbPassWord");
    if (ip_suche($REMOTE_ADDR)) //ip_suche überprüft ob ein Reload forlieg falls ja gibt
    {  
     $zahl = implode("",file("zahl2.txt"));  // sie false zurück und der Seitenaufruf
     echo "<b>".++$zahl."<b><br>";         //  wird nicht mitgezählt
     $dat = fopen("zahl2.txt","wb");
     fwrite($dat,"$zahl");
     fclose($dat);

     $res = mysql_db_query("$DatabaseName", "select datum,user FROM counter where datum='$var'");
     $num = mysql_num_rows($res);
     if ($num == 0)
     {
      $du = 1;
      $sqlab = "insert counter";
      $sqlab .= "(datum, user) values";
      $sqlab .= "('$var', '$du')";
      mysql_db_query("$DatabaseName", $sqlab);
      echo "<li>Besucher heute: $du</li>";
     }
     if ($num != 0)
     {
      $sqlab = "update counter set user=user+1 where datum='$var'";
      mysql_db_query("$DatabaseName", $sqlab);
      $result = mysql_db_query("$DatabaseName", "select datum,user FROM counter where datum='$var'");
      while($data = mysql_fetch_row($result))
      {
       $du = $data[1];
       echo "<li>Besucher heute: $du</li>";
      }
     }
    }
    else 
    {
     $zahl = implode("",file("zahl2.txt"));
     echo "<b>".$zahl."<b><br>";
     $res = mysql_db_query("$DatabaseName", "select datum,user FROM counter where datum='$var'");
     $num = mysql_num_rows($res);
     if ($num == 0)
     {
      $du = 0;
      $sqlab = "insert counter";
      $sqlab .= "(datum, user) values";
      $sqlab .= "('$var', '$du')";
      mysql_db_query("$DatabaseName", $sqlab);
      echo "<li>Besucher heute: $du</li>";
     }
     if ($num != 0)
     {
      $result = mysql_db_query("$DatabaseName", "select datum,user FROM counter where datum='$var'");
      while($data = mysql_fetch_row($result))
      {
       $du = $data[1];
       echo "<li>Besucher heute: $du</li>";
      }
     }     
    }
so aber jetzt hab ich nen problem irgendwie trägt der manchmal einfach 2 mal den selben tag ein und zwar einmal 15.6.03 und einmal 15.6.2003 woran liegt das wie kann ich es verbessern??? hat denn wirklich keiner ne antwort darauf????
 
Warum formatierst Du das Datum nicht mit der date-Funktion? Damit geht das doch viel besser.
Code:
$heute = date("j.n.Y", time());
... liefert Dir als String "15.6.2003" zurück.
 
em vergleich mal:

PHP:
$heute = date("j.n.Y", time());
PHP:
$heute2 = time();
     $var = date("j.n.y", $heute2);
also ich seh da rein gar keinen unterschied... Oder bin ich blind?^^
 
Es ist sowieso zum empfehlen, dass du für sämtliche Rechenoperationen mit Daten und generell in der DB das Datum im timestamp-Format speicherst. Das in passende Form dd.mm.yyyy zu bringen ist dann nachher das kleinste Problem, aber damit lässt sich viel viel leichter rechnen.
 
ja aber auf meine frage wie ich das heutige datum in eine integerzahl herausfinde hat ja niemand geantwortet :(
 
Original geschrieben von 2Pac
em vergleich mal:

PHP:
$heute = date("j.n.Y", time());
PHP:
$heute2 = time();
     $var = date("j.n.y", $heute2);

also ich seh da rein gar keinen unterschied... Oder bin ich blind?^^

Die Funktion unterscheidet zwischen Gross- und Kleinschreibung. "Y" liefert das Jahr als vierstellige Zahl, "y" liefert das Jahr als zweistellige Zahl. ;)

ja aber auf meine frage wie ich das heutige datum in eine integerzahl herausfinde hat ja niemand geantwortet
Timestamps sind doch normale Ganzzahlen...?
 
Zurück