Einzelnen Beitrag anzeigen
  #7 (permalink)  
Alt 13-05-2015, 14:59
Benutzerbild von fireweasel fireweasel
 Registrierter Benutzer
Links : Onlinestatus : fireweasel ist offline
Registriert seit: Sep 2008
Ort: At home
Beiträge: 851
fireweasel wird schon bald berühmt werdenfireweasel wird schon bald berühmt werden
fireweasel eine Nachricht über AIM schicken fireweasel eine Nachricht über Yahoo! schicken
Standard

Zweiter Versuch. Den ersten hat das Security-Token-Monster gefressen.

Zitat:
Zitat von Peter_AM Beitrag anzeigen
in meinem Script wird immer nur der erste Teil der If Anweisung
ausgegeben, sollte aber aber bei Datum älter als 90 Tagen
den else-Teil ausgeben.
Punkt Eins: DateTime-Objekte lassen sich direkt vergleichen. Vergleiche mit formatierten Datumsstrings sind nicht nötig und verursachen nur Probleme. Folgendes reicht also:

PHP-Code:
$date date_create($datensatz['datum']);
$abfragedatum = clone $date;
date_sub($abfragedatumdate_interval_create_from_date_string('90 days'));
if (
$date >= $abfragedatum) {
}
else {

Punkt zwei: Wie dir an dem vereinfachten Code jetzt vielleicht auffällt, ist deine Vergleichsbasis falsch gewählt: $date ist immer 90 Tage aktueller als $abfragedatum. Deswegen kommt immer der If-Zweig zum Zug.

Vergleichst du stattdessen mit einem aktuellen Zeitpunkt, wie beispielsweise "Jetzt" ("now"), klappts auch mit der Else:

PHP-Code:
$date date_create($datensatz['datum']);
$abfragedatum date_create('now');
$abfragedatum date_sub($abfragedatumdate_interval_create_from_date_string('90 days'));
if (
$date >= $abfragedatum) {
}
else {

P.S.: Deine Variablen-Benennung ist grausam. Lege dich auf eine Sprache fest (Englisch oder Deutsch). Wähle aussagekräftige Namen. Dann wird dein Code lesbarer und man findet solche (eigentlich recht einfachen) Logikfehler auch schneller.

Geändert von fireweasel (13-05-2015 um 15:02 Uhr)
Mit Zitat antworten