• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Set wann ist 0 größer als 7 ?

Status
Für weitere Antworten geschlossen.

Ratchet

Neues Mitglied
Ganz einfache frage,
mein code sieht etwa so aus:
Code:
$eins = 0 // Diese variiert immer
$zwei = 7

if( $eins > $zwei )
{
...
}

Bei mir trifft diese if-Anweisung zu. Wie kann das sein ?
 
Die hab ich nur im Beispiel vergessen.
Hier mal das original:
Code:
    $date = date ("z", filemtime($open));
    $today = date ("z");
    $diff = $today - $date;
    if($diff > 7);
    {...

Dieser code soll etwas ausführen wenn eine datei älter als 7 tage ist
 
Ich errechne ja den tag der Datei, und den heutigen. Ziehe die dann voneinander ab. Das ergebnis wäre dann ja die differenz ?

kannst du mir ein beispiel für meinen fall geben ? Ich verstehe nicht was mktime genau macht.
 
Ja, grundsätzlich ist deine variante schon richtig. Aber sie funktioniert nicht mehr richtig wenn die datei in einem anderen jahr zuletzt geändert wurde, weil du immer nur den tag des jahres abfragst ohne dabei das jahr zu berücksichtigen. überlege dir doch mal was passiert wenn:
Datei: 17.06.1998
Heute: 17.06.2007
Es wird 0 oder vll 1 (schaltjahr) herauskommen! und nicht die datei ist älter als 7 tage.
Oder was passiert hier:
Datei: 31.12.2006 // ca. 356
Jetzt: 01.01.2007 // 1
Abstand = 1 - 356 = -355
Der abstand beträgt -355 tage?

Für dein vorhaben solltest du den unix timestamp verwenden. Der ist zum rechnen von zeiteinheiten immer gut geeignet. Es gibt die Zeit seit dem 1.1.1970 in sekunden an. time liefert die den unixtimestamp von "jetzt". mktime den timestamp in abhängigkeit der parameter die du übergibst. Die differenz gibt die sekunden abstand zwischen beiden zeitpunkten. Da:
Tag = Sekunde / 60 / 60 / 24;
Kannst du diesen zeitlichen abstand in die anzahl der tage umwandeln und erhälst ein ergebnis was immer richtig ist!
 
Vieleicht will ich es einfach nicht begreifen. bei mktime muss ich ja ein datum mit angeben, aber wo soll ich denn das her nehmen ?

z.B. hier:
echo date ("M-d-Y", mktime(0,0,0,12,32,1997));

Anscheinend wird da ein mit date erechnetes datum mit mktime überschrieben da bei mktime ein festes datum angegeben ist ?
 
Wenn du dein script auf unix timestamp zeitrechnung umstellst sieht es so aus:

PHP:
$file_time = filemtime($open); /* Unixzeitstempel der letzten änderung */
$now_time = time(); /* Unixzeitstempel von jetzt */
$diff_time = $now_time - $file_time; /* Zeitdifferenz der beiden zeitpunkte */
$diff_time = $diff_time / 60 / 60 / 24; /* Umrechnung der sekunden in tage */
if($diff_time > 7)
{
  echo "Datei ist älter als 7 tage!";
}

date ist zur umwandlung eines timestamps in einen lesbaren text gedacht! Nicht um damit zu rechnen. Mit date formatierst du!

Entschuldige das ich dich mit mktime verwirrt habe. Damit kannst du die aus einer eigenen zeitangabe einen timestamp erstellen lassen. Das brauchst du aber nicht weil filemtime bereits einen timestamp zurückgibt!
 
Ordnung ist 100% Korrekt und die Überisicht ist auf jeden Fall gewährleistet (auch, wenn ich kurz mal in die Datenbank schau um was zu checken). Ich finde die Datumsspeicherung in diesem Format am vorteilhaftesten.
 
Status
Für weitere Antworten geschlossen.
Zurück
Oben