Pitäisi saada readdir palauttamaan tiedostot päivämäärän mukaan ( Muokkaus aika ) Elikkäs tälläinen Screnshottien hakija käytössä:
<?php $dir = "./screenshots/"; $files = 0; $kertoin = 0; echo "<table align=\"center\" width=\"400\"><tr><td>"; if (is_dir($dir)) { if ($dh = opendir($dir)) { echo "<table align=\"center\">"; while (($file = readdir($dh)) !== false) { if ($file != "." && $file != "..") { echo "<td width=\"150\" class=\"imageborder\"><a href=\"http://koti.mbnet.fi/~smannila/zro/screenshots/$file\"><img class=\"image\" height=\"150\" width=\"150\" src=\"http://koti.mbnet.fi/~smannila/zro/screenshots/$file\"></a></td>"; $files = $files + 1; if ($files > "3" && $kertoin == "0") { $kertoin = 7; echo "<tr>"; } if ($files > $kertoin && $kertoin <> "0") { $kertoin = $kertoin + 4; echo "<tr>"; } } } closedir($dh); echo "</table>"; } } echo "</td></tr></table>"; echo "<br>Totally $files files"; ?>
Luet ensin tiedostot taulukkoon, sorttaat taulukon ja tulostat. Laitat vaikka taulukon muotoon:
$taulukko[filemtime("tiedosto.pääte")] = "tiedosto.pääte"
Muistaaksen ksort() palvelee parhaiten tarkoituksiasi(siis jos taulukko on tuossa muodossa).
Edit: Nii joo ja muistin itsekkin olleeni samanlaisen tilanteen edessä: https://www.ohjelmointiputka.net/keskustelu/2669-tiedostojen-lukeminen-taulukkoon
Tota niin, ei oikein tahtonut pelittää. Tässä olis vielä tää koko koodi. Ja tällästä hervas: "Warning: Cannot use a scalar value as an array in /mbnet/s/smannila/zro/filerz/xuploadedscreenshots.php on line 11" Ja toi on rivi jossa napataan tiedot Taulukkoon. Ja kyseessähän on siis kuva tiedostoja.
<?php $dir = "./screenshots/"; $files = array(); $files = 0; $kertoin = 0; if (is_dir($dir)) { if ($dh = opendir($dir)) { while (($file = readdir($dh)) !== false) { if ($file != "." && $file != "..") { $files[filemtime($dir . "/" . $file)] = $file; } } closedir($dh); } } ksort($files); $files = array_reverse($files); echo "<table align=\"center\" width=\"400\"><tr><td>"; echo "<table align=\"center\">"; for($i = 0; $i < count($files); $i++) { echo "<td width=\"150\" class=\"imageborder\"><a href=\"http://koti.mbnet.fi/~smannila/zro/screenshots/$files[$i]\"><img class=\"image\" height=\"150\" width=\"150\" src=\"http://koti.mbnet.fi/~smannila/zro/screenshots/$files[$i]\"></a></td>"; $files = $files + 1; if ($files > "3" && $kertoin == "0") { $kertoin = 7; echo "<tr>"; } if ($files > $kertoin && $kertoin <> "0") { $kertoin = $kertoin + 4; echo "<tr>"; } } echo "</table>"; echo "</td></tr></table>"; echo "<br>Totally $files files"; ?>
Käytät taulukon indekseinä tiedostojen muokkausaikaa:
$files[filemtime($dir . "/" . $file)] = $file;
ja miksi $files julistetaan eka taulukoksi ja sitten nollaksi?
EDIT: Korjausehdotus: Käytä esim. kaksiulotteista taulukkoa, tosin silloin tarvitset array_multisorttia, mutta siihen löytyy ohjeita edellisistä keskusteluista.
Elikkä katoin tosta toisesta threadista vinkkiä, en tiedä itse asiassa mitä varten arrayn tunnuksena käytetään tiedoston muokkaus aikaa, ja kuinka arvot pitäisi tämän perusteella saada oikeesta solusta, mutta... joo. ;S
EDIT: Kokeilen vähän tota nyt omilla keinoilla
EDIT2: Oho!, ihmettelin tota kommenttia miksi eka julistetaan Taulukoksi ja sitten nollaksi. Sitten vasta huomasinkin, että $files muuttuja onkin jo olemassa. Eli nyt pelittää. Kiitos =P
Hups jätäpäs edellinen korjausehdotukseni huomiotta ja vaihda vaan toho forin tilalle foreach:
foreach($files as $file => $maketime) { .. }
niin johan pelittää. Aajoo ja:
$files = $files + 1;
Muuta tuo muuttuja jonkin muun nimiseksi, sillä sitä käyttää jo tuo $files-taulukko. Tuo hoituu myös näin:
$muuttuja+=1; tai $muuttuja++;
Jeps, sain ton toimimaan jo ennemmin. Mutta kiitos
Aihe on jo aika vanha, joten et voi enää vastata siihen.