kostenloser Webspace werbefrei: lima-city


Problem mit counter

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    marvinkleinmusic

    Kostenloser Webspace von marvinkleinmusic

    marvinkleinmusic hat kostenlosen Webspace.

    Hallo Zusammen,

    Ich habe derzeit ein tag/problem">Problem mit meinem Counter. Ich habe es auch bereits Identifiziert jedoch weiß ich nicht wie ich es lösen kann.

    Hier ersteinmal meine 2 Codes.


    Alt
    ////Variabeln
    										$tag   	 = date("j");
    										$monat 	 = date("m");
    										$jahr 	 = date("Y");
    										$ort	 = $_SERVER["REQUEST_URI"];
    										$woher	 = $_SERVER["HTTP_REFERER"];
    										$browser = $_SERVER["HTTP_USER_AGENT"];
    										$timenow = mktime(0,0,0,$monat,$tag,$jahr);
    										$ip 	 = $_SERVER['REMOTE_ADDR'];
    										
    										
    										///Abfrage ob Neuer Gast & Löschung der Alten
    										$counter_del = $db->query("SELECT * FROM counter WHERE `timed` < '" . $timenow . "'");
    											  while($del = $counter_del->fetch_object()){
    												$db->query("DELETE FROM counter WHERE `id`='" . $del->id . "'");
    											  }
    										/////Eintragung neuer Gäste
    										$counter_new = $db->query("SELECT * FROM counter WHERE ip = '$ip'");
    										$menge = $counter_new->num_rows;
    										$timenow = time();
    										
    											if($menge == "0"){
    											$db->query("INSERT INTO counter (ip,timed,username,ort,woher,browser) VALUES ('$ip','$timenow','$username','$ort','$woher','$browser')");
    											}
    											elseif($menge == "1"){
    											$db->query("UPDATE counter SET timed='$timenow',ort='$ort' WHERE ip='$ip'");
    											}
    											
    
    
    
    									////Ausgabe der Datenbankwerte
    										$counter_stats = $db->query("SELECT * FROM counter");
    										$heute = $counter_stats->num_rows;
    										$gesammt_sql = $db->query("SELECT * FROM counter ORDER BY id DESC");
    										$gesammt = $gesammt_sql->fetch_object();
    										////Ausgabe von User die Online sind
    										$time = time();
    										$zeit = $time-900;
    										$sql_online = $db->query("SELECT * FROM counter WHERE timed > '$zeit'");
    										$online = $sql_online->num_rows;
    
    
    									mysqli_close($db);
    									?>
    									<ul class="link-list">
    										<li><?php echo"Heute: $heute | Gesamt: $gesammt->id | Online: $online ";?></li>
    									</ul>



    Neu:
    ////Variabeln
    											$tag   	 = date("j");
    											$monat 	 = date("m");
    											$jahr 	 = date("Y");
    											
    											
    											$gestern = strtotime("-1 day");
    											$alter_tag = date("d.m.Y",$gestern);
    											$datum   = $alter_tag . "." . $monat . "." . $jahr . ".";
    											$ort	 = $_SERVER["REQUEST_URI"];
    											$woher	 = $_SERVER["HTTP_REFERER"];
    											$browser = $_SERVER["HTTP_USER_AGENT"];
    											$timenow = mktime(0,0,0,$monat,$tag,$jahr);
    											$ip 	 = $_SERVER['REMOTE_ADDR'];
    											$timestamp = time();
    											$zeit = $timestamp-900;
    
    											/// MySQL Abfragen
    											$counter_del = $db->query("SELECT * FROM counter WHERE `timed` < '" . $timenow . "'"); 
    											$counter_new = $db->query("SELECT * FROM counter WHERE ip = '$ip'");
    											
    											
    											/// Abfrage für Ausgabe
    											$counter_stats = $db->query("SELECT * FROM counter ORDER BY id DESC");
    											$sql_online = $db->query("SELECT * FROM counter WHERE timed > '$zeit'");
    											
    											$menge = $counter_new->num_rows;
    											$total_day_guests = $counter_del->num_rows;
    										
    											////Ausgabe der Datenbankwerte
    											$heute = $counter_stats->num_rows;	
    											$gesammt = $counter_stats->fetch_array();
    											$online = $sql_online->num_rows;
    											
    											$total = $gesammt['id'];
    											
    
    											///Abfrage ob Neuer Gast & Löschung der Alten
    
    											if($total_day_guests > 0){
    
    												while($del = $counter_del->fetch_object()){
    													$db->query("DELETE FROM counter WHERE `id`='" . $del->id . "'");
    												}
    												
    												$db->query("INSERT INTO guests_day (date,guests_counter,total_guests) VALUES ('$datum', '$total_day_guests', '$total')");
    												$db->query("INSERT INTO counter (ip,timed,username,ort,woher,browser) VALUES ('$ip','$timestamp','$username','$ort','$woher','$browser')"); 	
    											}
    											else{	
    												/////Eintragung neuer Gäste
    											
    												if($menge == "0"){
    													$db->query("INSERT INTO counter (ip,timed,username,ort,woher,browser) VALUES ('$ip','$timestamp','$username','$ort','$woher','$browser')"); 
    												}
    												elseif($menge == "1"){
    													$db->query("UPDATE counter SET timed='$timestamp', ort='$ort' WHERE ip='$ip'");
    												}
    											}
    										
    										mysqli_close($db);
    										?>
    									<ul class="link-list">
    										<li><?php echo"Heute: $heute | Gesamt: $total| Online: $online ";?></li>
    									</ul>


    Das Problem ist jetzt folgendes:

    Ich möchte alle Einträge aus Tabelle counter um Punkt 0 Uhr löschen lassen. Dafür wird abgefragt per SQL

    $db->query("SELECT * FROM counter where timed < . $timenow . ");


    Das Ergebnis dieser Abfrage wird per num_rows gespeichert und in eine weitere Datenbank eingetragen.
    Anschließend soll per Whileschleife alle Einträge die das erfüllen gelöscht werden und in einer weiteren Abfrage wird ein neuer Eintrag vorgenommen, sodass der Counter wieder bei Null startet.

    Soweit sogut allerdings wird auch überprüft ob ein Nutzer schonmal auf der Seite war am Tag, wenn ja wird timed mit time() überschrieben.

    Allerdings ist time() ausirgendeinen Grund größer als der Wert für den nächsten Tag.

    Beispiel:
    Heute:1415142000
    Morgen:1415228400
    time() : 1415294559

    Wie man deutlich sehen kann ist time() größer als morgen aber warum ist das so?
    die Variable $timenow wird immer mit den timestamp von heute belegt, sprich morgen ist diese = 1415228400

    Das Alte System hat wunderbar funktioniert doch warum das neue nicht?

    Hat jemand eine Idee, ich hänge da schon seit ein Paar Tagen fest.

    Randinfo: in neue Version ist die Spalte username in counter nicht mehr vorhanden.


    Liebe Grüße
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. Hallo,

    wie bist du denn auf diese Zeitausgaben aus deinem Beispiel gekommen?
    Bitte poste mal den Codeteil dazu.

    Weiters fällt auf dass du die Variable $datum falsch zusammensetzt. Gib dir die mal aus und schau was rauskommt.


    Übrigens würde ich dir Prepared Statements (oder entsprechendes Escaping) stark ans Herz legen, dein Code in der jetztigen Form ist ja stark fahrlässig. ;)
    http://at2.php.net/manual/en/mysqli.quickstart.prepared-statements.php

    Grüße,
    Philipp
  4. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!