Sie befinden sich hier im Forenarchiv von phpforum.de wenn Sie direkt ins Forum möchten, klicken Sie bitte hier. Zur Startseite kommen Sie hier.

Datumsberechnung

Hallo,


Untenstehenden Code habe ich zur Datumsberechnung erstellt.

Leider habe ich aber jetzt Probleme mit der Datenbankabfrage.
Er führt die Löschanweisung nicht durch.
In meiner Datenbanktabelle steht das datum wie folgt geschrieben:

30.10.03 18:35:08

und die defnierte Variable $twoweeks liefert als Wert z.B.:

16.02.04 23:025:02

jetzt müsste es doch eigentlich klappen da die Datumsformate gleich sind.

Warum löscht er aber trotzdem nicht?
Was stimmt mit der Datenbankabfrage nicht?

Wäre nett, wenn mir einer den untenstehenden Code verbessern könnte.

gruß communikator

<?php

$twoweeks = date("d.m.y H:i:s", time() - 14*86400);


$db=mysql_connect("localhost","root","");
$res=mysql_db_query("freizeit","delete * from postausg where datum < $twoweeks");

$num=mysql_num_rows($res);
mysql_close($db);
?>

Hier gehts zum Orginal Eintrag "Datumsberechnung" im Forum

Antworten

kleine Frage, arbeitest du mit MySQL DB? Wenn ja, musst du das Datum ins englische Format ($datum = date('Y-m-d)') konvertieren und die Spalte sollte DATE oder DATETIME sein.

So konvertierst du das Datum um:
Code:                   In Zwischenablage kopieren (nur IE)
1">

... das Problem hatte ich auch vor kurzem und da hat mir VolkerK mit diesem Tip geholfen.


2.

Ja, ich arbeite mit einer mysql Datenbank

Die Lösung erscheint mir für mein Problem ein wenig kompliziert, muss mal sehen, ob es nicht noch eine andere Lösung gibt.

gruß
communikator


3.

Leider speichert MySQL nur im englischen Format. Und bei jeder Ausgabe eines Datums (2004-02-15) brauchst du dieses nur umstellen, einfacher geht es nicht. Schreibst dir ne Funktion und dann gehts schon von allein.


4.

Mein datum steht in der MySQL Datenbank wie folgt:


30.10.03 18:35:08

So warum löscht er jetzt nicht nach der obigen Anweisung:

kann er z.B. 30.10.03 12:15:02 < 16.02.04 19:05:01 nicht interpretieren?


5.

Auszug aus der Doku zu mysql_db_query:

Diese Funktion ist seit PHP 4.0.6 veraltet. Verwenden Sie diese Funktion nicht. Stattdessen sollten Sie die Funktionen mysql_select_db() und mysql_query() verwenden.

Schreibe nach der Zeile mit mysql_query diese Zeile rein:

if (mysql_errno()) echo mysql_error();

Und siehe: http://www.mysql.de/doc/de/DELETE.html

Delete * ist falsch.

*** Nobody ***


6.

wenn es so in der Datenbank steht wird es wohl ein varchar-Feld sein. Dementsprechend ist es ein String.

Vergleichst du einen String fängst du beim ersten Zeichen an. Und da ist nun mal eine 3 GRÖßER als eine 1


7.

Fehlermeldung:

mysql_num_rows(): Supplied argument is not a valid MySQL result resource

also, irgendwie kann er das nicht interpretieren:

delete from postausg where datum < $twoweeks

Ich werde noch verrückt :-((

gruß
communikator


8.

Ja, TiBo du hast recht ich habe es als varchar abgespeichert.

Was kann ich dann machen?


9.

Du machst es dir schwerer als es ist. Warum nutzt du nicht das Format 'date' oder 'datetime' in deiner DB. 'varchar' ist für Strings und nicht für Datums- und Zeitangaben. Mit 'date' oder 'datetime' lassen sich problemlos Zeitberechnungen machen - und das war doch am Anfang dein Problem, oder?

Hier ein kleines Beispiel für Funktion Datumsumstellung:
Code:                   In Zwischenablage kopieren (nur IE)
2">

... statt '$date = date('Y-m-d')' kannst du auch ein DB-Abfrage Ergebnis einsetzen. Und für eine Ausgabe kannst du es ins deutsche Format umwandeln. Eigentlich sehr einfach!


Hier gehts zum Orginal Eintrag "Datumsberechnung" im Forum
 
phpforum.de | Impressum | Handy Bundles