Bild für bestimmten zeitaum anzeigen

hi
erstmal frohes neues jahr :slight_smile:
ich möchte für eine dateiliste eine aktualitätsanzeige machen. das hat bis gestern auch ganz gut geklappt, aber durch das neue jahr/neuen monat spiel die anzeige ein wenig verrückt.
es soll eine grafik angezeigt werden von dem hochlademoment an bis 2 tage danach. das habe ich so gelöst:

...
$FileTime = date("d.m.Y, H:i:s", $file["FileTime"]); //Hochladedatum auf Datei bezogen
$datumh = date("d.m.Y, H:i:s");  //Aktuelles Datum
if($datumh - $FileTime < 2)  //2 Tage 
	{
	$neu = "<img src='images/neu.gif' alt='Datei vor weniger als 2 Tagen hochgeladen!'>";
	}
...

das bild wurde auch über den monat hinweg angezeigt, nur da sich der monat ja geändert hat wird die ersten 2 tage bei allen dateien das neu zeichen gezeigt. :neutral_face:

kann man die anzeige auch anderes gestalten?

Warum arbeitest du nicht mit Timestamps?
In etwa(ungetestet):

if(time() - $file['Filetime'] < 60*60*24*2){ //Die 2 Tage
//Bild anzeigen
}

Ich hoffe ich habs richtig verstanden. Das arbeitet ganz ohne Bezug auf das Datum.
Mfg
Mgier

ich hab das mal versucht, aber iwie klappt das nicht, da $FileTime ein anderes Format hat. also hab ich das erstmal in unix-timestamp konvertiert, aber trotzdem gehts nicht:

      $FileTime = date("d.m.Y, H:i:s", $file["FileTime"]);
$ft_time = explode( ",", $FileTime );
$dateitime = mktime($ft_time[0],$ft_time[1],$ft_time[2],$ft_time[3],$ft_time[4],$ft_time[5]);
if(time() - $dateitime < 172800)
	{
	$neu = "<img src='images/neu.gif' alt='Datei vor weniger als 2 Tagen hochgeladen!'>";
	}

die grafik wird nicht angezeigt, obwohl die datei seit 2h erst hochgeladen ist…
aber das müsste das doch eigentlich laufen?!

Und welches?

[quote]also hab ich das erstmal in unix-timestamp konvertiert, aber trotzdem gehts nicht:

$FileTime = date("d.m.Y, H:i:s", $file["FileTime"]);

date liefert keinen Unix Timestamp.

Müsste hätte wäre wenn … hilft beim Programmieren alles nichts.

Mache Kontrollausgaben, um zu schauen, ob die verwendeten Variablen die erwarteten Inhalte haben, und um zu schauen, ob in den Anweisungsblock der If-Abfrage hineingegangen wird.


Damit teilst du das in d.m.Y und H:i:s
Im nächsten Schritt willst du aber etwas anderes weiterverarbeiten.

Versuchs mal mit statt
[code]$FileTime = date("d.m.Y, H:i:s", $file["FileTime"]);[/code]
mit
[code]$FileTime = date("H,i,s,m,d,Y", $file["FileTime"]);[/code]

Ich hoffe ich hab da jetzt keinen Denkfehler.
Mfg

*edit: Und auf die Reihenfolge der Parameter bei mktime() achten :wink:

Damit teilst du das in d.m.Y und H:i:s
Im nächsten Schritt willst du aber etwas anderes weiterverarbeiten.

Versuchs mal mit statt

mit

Ich hoffe ich hab da jetzt keinen Denkfehler.
Mfg

*edit: Und auf die Reihenfolge der Parameter bei mktime() achten :wink:

danke für die antworten.
das sieht dann so aus:

$FileTime = date("d.m.Y, H:i:s", $file["FileTime"]); $aktuellezeit = time(); $timefile = date("H,i,s,m,d,Y", $file["FileTime"]); list($h,$i,$s,$m,$d,$y) = explode(',',$timefile); $timestampfile = mktime($h,$i,$s,$m,$d,$y); if(($aktuellezeit - $timestampfile) < 172800) { $neu = "<img src='images/neu.gif' alt='Datei vor weniger als 2 Tagen hochgeladen!'>"; }
aer komisch ist, dass die grafik bei den jüngsten und ältesten dateien angezeigt wird, aber nicht bei der ersten mit einem mittleren datum

lg

//edit: aufm anderen server mit älteren dateien läuft das.

ich schau um 23:20 mal ob das symbol dann immernoch da ist. dann sind die 2 tage nämlich um.

//edit²: hat funktioniert :wink:

Welches Format hat denn nun $file[“FileTime”]?

date() nimmst nämlich eigentlich nur *nix-Timestamps.

also $file[“FileTime”] hatte auch das timestamp format.
darum hab ichs auch grad geändert:

$aktuellezeit = time();    
$timestampfile = $file["FileTime"];
if(($aktuellezeit - $timestampfile) < 172800)
	{
	$neu = "<img src='images/neu.gif' title='Datei vor weniger als 2 Tagen hochgeladen!' alt='Datei vor weniger als 2 Tagen hochgeladen!'>";
	}

viele grüße

hi
ich hab noch ein neues problem. das anzeigen des bildes funktioniert einwandfrei. jetzt wollte ich machen, dass bestimmte dateien mit nem präfix im namen ([***]) das bild länger angezeigt bekommen.
aber ich find nix im inet über präfixe auslesen oder dateinamen auf bestimmte anfangsbuchstaben checken :neutral_face:
könnt ihr mir die funktion nennen um zum beispiel die ersten 4 buchsatben auszulesen? den rest bekomm ich selber schon hin :smiley:
lg

php.net/manual/en/ref.strings.php

danke für eure antworten. ich habs jetzt so gelöst:

$prefix = 'test'; $pos = stripos($file["FileName"], $prefix); if ($pos !== false) { $test = "<img src='images/ha.gif' title='TEST' alt='TEST'>"; }else{ $test = ""; }

lg