Hei
Ongelma on seuraava. Minulla on (jostain aikaa sitten löydetty) koodinpätkä, joka hakee hakemiston viimeisimmäksi päivitetyn tiedoston ja tulostaa sen sekä päivityspäivämäärän sivulle.
Koodi tulostaa yhtäkkiä väärää päivämäärää. Ihan kuin se ei osaisi vaihtaa helmikuun puolelle :)
(Koodia on tässä pätkitty ja lyhennetty.)
<?php $newstamp = 0; $newname = ""; $dc = opendir($dir); while ($fn = readdir($dc)) { # Eliminate current directory, parent directory if (ereg('^\.{1,2}$',$fn)) continue; # Eliminate other pages not in pattern if (! ereg($pattern,$fn)) continue; $timedat = filemtime("$dir/$fn"); if ($timedat > $newstamp) { $newstamp = $timedat; $newname = $fn; } } echo "date("F jS, Y", $timedat)"; ?>
Eikös sinun pitäisi tulostella ulos $newstamp eikä $timedat? $timedat sisältää viimeisen tarkastetun tiedoston.
En tiedä, tuolla tavalla se on toiminut hienosti viimeiset kaksi kuukautta. Mutta nyt kun vaihtui helmikuuksi, se antaa oikean tiedostonimen (listaus puuttuu tuosta koodipätkästä), mutta päivämäärä on aina 31.1.
Jos viimeiset kaksi kuukautta viimeisenä tutkitun tiedoston päivämäärä (muuttujassa $timedat) on ollut sattumalta sama kuin uusimman tiedoston päivämäärä?
Tuossa koodissa on selvästi ideana, että kaikki tiedostot käydään läpi ja uusimman tiedoston nimi ja päivämäärä tallennetaan muuttujiin $newname ja $newstamp.
Millä uudet tiedostot on kopioitu, jos ne on? FTP:llä? Aika monet ohjelmat osaa pitää muokkauspäivän samana vanhana, mutta tiedoston luontipäivä asetetaan usein sille päivämäärälle kun tiedosto on kopioitu palvelimelle.
Kiitokset Merri ja Antti. Niinhän se oli.
Hassua (?) miten voi sattumien kautta vääräkin muuttuja toimia "oikein" :)
Minullekin sattuu tuollaista aina toisinaan. Esim. yksi Ohjelmointiputkan keskustelun toiminto oli aivan väärin ohjelmoitu, mutta kuitenkin se toimi mainiosti viiden vuoden ajan, kunnes virhe paljastui jokin aika sitten.
Aihe on jo aika vanha, joten et voi enää vastata siihen.