kostenloser Webspace werbefrei: lima-city


Zeitunterschied mysql

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    munich

    munich hat kostenlosen Webspace.

    Hey Leute,
    also ich hab ne Tabelle, in der ich IP-Adressen speicher, jeweils dazu das Datum und die Zeit als Datetime, wann sie eingetragen wurde. Jetzt möchte ich aus der Tabelle alle einträge löschen, die älter als eine Stunde sind.
    Ich klar, ich mach\'s mit DELETE und als WHERE Bedingung geb ich das dann eben ein, aber wie?
    Ich habs erst mit DATEDIFF und TIMEDIFF versucht, die geben mir ja den Abstand zwischen den Zeitpunkten zurück, aber wie kann ich dann prüfen, ob das jetzt größer oder kleiner als eine Stunde ist?
    Wie würdet ihr das machen? Hab schon ewig im web gesucht...
    thx a lot,
    munich
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

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

  3. Die IP mit dem Timestamp eintragen (PHP Fkt. \"time ()\").
    Dann einfach in der MySQL Bedingung \"WHERE `feld` < \'.time () - 60*60.\'\". // 60 Sekunden * 60 = eine Stunde
  4. Autor dieses Themas

    munich

    munich hat kostenlosen Webspace.

    okay, ähm, das Datum muss ich aber noch in das Datetime format von mysql konvertieren. Hast du vielleicht grad ne Funktion parat, die das erledigt?
  5. Aso, du nutzt den Timestamp von MySQL?
    Dann schreibe es doch einfach dementsprechend um:
    \"WHERE `feld` < (MYSQL_TIMESTAMP_FUNKTION - 3600)\"
    Die Konstante \"MYSQL_TIMESTAMP_FUNKTION\" solltest du natürlich entsprechend ersetzen.
  6. Autor dieses Themas

    munich

    munich hat kostenlosen Webspace.

    ähm, okay, mir is ned ganz klar was du meinst.
    Also Feld is ja der Wert aus der mysql Tabelle, der liegt von in dem Format des mysql datetime, also als yyyy-mm-dd hh:mm:ss
    Und das datum in PHP liegt ja quasi als timestamp, also als Zahl vor, das seh ich richtig, oder?
    Naja, das heißt ja ich vergleiche Äpfel mit Birnen, also muss ich eines der Daten konvertieren. Am einfachsten wäre hald denk ich den timestamp in ne mysql datetime zu verwandeln und dann die beiden mit na mysql funktion zu vergleichen, z.B. DATEDIFF oder TIMEDIFF. Frage hier bloß, gibts eine Funktion, die beides zum Vergleich nutzt, weil es ja sonst Probleme mit Mitternacht geben könnte.
  7. Autor dieses Themas

    munich

    munich hat kostenlosen Webspace.

    Hey,
    ich hab jetzt die MYSQL-Funktion UNIX_TIMESTAMP gefunden, allerdings klappt mein Vergleich trotzdem ned wirklich, ich habs so probiert:

    $sql=\"...WHERE
    UNIX_TIMESTAMP(time)<\".(time() - 60*60);

    das klappt aber so hald ned, vllt. könnt ihr mir da weiterhelfen...
  8. s***h

    Warum machst du dir es so schwer?
    Nimm doch gleich die PHP-Funktion time(), um das Datum in der Datenbank zu speichern. So hast du das Problem mit dem unterschiedlichen Zeitformat erst gar nicht ;)

    Beitrag geändert: 23.9.2007 13:21:43 von sesch
  9. Autor dieses Themas

    munich

    munich hat kostenlosen Webspace.

    hmhmhm, okay, was mach ich jetzt, ich bin langsam verwirrt. Also, in meiner mysql datenbank nehm ich dann also für die Zelle die einstellung TIMESTAMP.
    So, muss da jetzt ein Timestamp rein, oder in welcher Form muss ich das eintragen? Ich würd jetzt einfach gern nen Unix-Teimestamp wie in PHP in die Tabelle speichern und dann eben mit aktuellem Timestamp-3600 vergleichen.
    Was stell ich in der Zelle ein, damit ich Timestamps speichern kann??? und mit welcher Funktion bekomm ich den aktuellen UNIX-Timestamp?
  10. s***h

    Was du in der Zelle der datenbank einstellt ist egal, du kannst einfach INT oder VARCHAR nehmen.

    Und dann

    $date = time(); // = Unixzeit

    bzw.

    $date2 = time() - 3600;
  11. Autor dieses Themas

    munich

    munich hat kostenlosen Webspace.

    Ich weiß ned, ich glaub ich hab ein grundlegendes Problem mit meinem Verständnis für MYSQL, hier is mein query zum eintragen der IP, der funktioniert auch ned, ich seh aber echt keinen Fehler:

    $sql=\"INSERT INTO spam-contact
    (ip,time)
    VALUES
    (\".$_SERVER[\'REMOTE_ADDR\'].\",\".time().\")\";


    Der Plan ist, dass in die Tabelle spam-contact in die Spalten ip und time die IP des Users und der aktuelle Timestamp eingetragen werden. Auf welches Format muss ich denn die Zelle in der Datenbank für time stellen?
  12. Autor dieses Themas

    munich

    munich hat kostenlosen Webspace.

    autsch, das ganze Problem is der Bindestrich im Namen der Tabelle...
  13. Autor dieses Themas

    munich

    munich hat kostenlosen Webspace.

    okay, jetzt läufts fast, nur ein Problem hab ich noch. Ich möchte jetzt überprüfen wie oft die IP des jeweiligen Nutzers schon in der Tabelle steht. Mein Plan war, dass ich hald alle Zellen mit der IP des users in ne Ergebnistabelle speichern lass und dann hald die Anzahl der Reihen zählen lass.

    Hier mein Ansatz:
    $sql=\"SELECT
    ip
    FROM
    spamcontact
    WHERE
    ip=\'\".$_SERVER[\'REMOTE_ADDR\'].\"\'\";

    $result=mysql_query($sql) OR die(mysql_error());

    Damit sollten in der Ergebnistabelle dann genau so viele Einträge sein wie oft die IP des Users in der Tabelle steht.

    Und dann lass ich die Einträge zählen:

    $counter=0;

    while($row = mysql_fetch_assoc($result)) {
    $counter++;
    }

    Aber irgendwie klappt das ned, wär klasse wenn ihr mal den Code durchschaun könntet.
    Es gibt keine errors, von daher isses wohl ein logischer Fehler...
    thx
  14. mysql_num_rows() verwenden? http://de2.php.net/mysql-num-rows

    Beitrag geändert: 23.9.2007 15:20:36 von tct
  15. Autor dieses Themas

    munich

    munich hat kostenlosen Webspace.

    okay, das hat super geklappt, thx a lot!
  16. Autor dieses Themas

    munich

    munich hat kostenlosen Webspace.

    ach, ne Frage hab ich noch, jetzt ned dazu, aber zu was ähnlichen. Hab schon ewig gegoogelt und im Board gesucht, aber leider keine einfache Lösung gefunden. Wie berechne ich aus dem Geburtsdatum (in einer mysql datenbank im format date gespeichert) das Alter der Person?
    Gibts da irgendne fertige php Funktion oder irgendwas einfaches?
    thx,
    munich
  17. 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!