Autor Zpráva
AMD
Profil
Zdravím, potřebuju prolézt jeden jeden adresář a vypsat posledních třeba 15 naposled změněných souborů. Pro mě, non-PHPáka :), to není úplně jednoduchý... Napsal jsem tohle, ale nevím jak dál :-(
$ldir = "/nějakej/adresář/";


if ($handle = opendir($ldir))
{
while (false !== ($file = readdir($handle)))
echo date("YmdHis", filemtime($ldir.$file)) . ": $file<br/>\n";

closedir($handle);
}

Poraďte prosím.
nightfish
Profil
tohle by možná mohlo fungovat

$soubory = array();
$ldir = "/nějakej/adresář/";
if ($handle = opendir($ldir)) {
while (false !== ($file = readdir($handle)))
$soubory[] = array(Date("YmdHis", filemtime($ldir.$file)), $ldir.$file);
closedir($handle);
}
//tady možná bude potřeba trochu zaexperimentovat
//nápověda je na http://cz.php.net/manual/cs/function.array-multisort.php
array_multisort ($ar[0], SORT_ASC, SORT_STRING);

//vypsání prvních 15 záznamů (v případě, že jich je v poli míň, vypíše jen ty, co tam jsou
for ($i = 0; $i < (Count($soubory) >=15) ? 15 : Count($soubory)); $i++) {
echo $soubory[$i][0].": ".$soubory[$i][1]."<br />";
}
AMD
Profil
Tohle je (po menší úpravě) vypíše jak si jen zamane :/ Bude tam háček jen v tom multisortu, ale nemůžu přijít na to jakej...
nightfish
Profil
tohle by mělo fungovat

<?php
$soubory = array();
$ldir = "/nějakej/adresář/";
$pocet = 0;
if ($handle = opendir($ldir)) {
while (false !== ($file = readdir($handle))) {
if ($file == "." || $file == "..") continue;
$soubory[0][$pocet] = Date("YmdHis", filemtime($ldir.$file));
$soubory[1][$pocet] = $ldir.$file;
$pocet++;
}
closedir($handle);
}

//tady možná bude potøeba trochu zaexperimentovat
//nápovìda je na http://cz.php.net/manual/cs/function.array-multisort.php
array_multisort ($soubory[0], SORT_ASC, SORT_NUMERIC);

//vypsání prvních 15 záznamù (v pøípadì, že jich je v poli míò, vypíše jen ty, co tam jsou
for ($i = 0; $i < ((Count($soubory[0]) >=15) ? 15 : Count($soubory[0])); $i++) {
echo $soubory[0][$i].": ".$soubory[1][$i]."<br />";
}
?>
AMD
Profil
To je ono, jen se tam musí dát SORT_DESC, místo SORT_ASC. Díky moc!
AMD
Profil
Aha, ne tak docela - seřadí se jen ta data - což znamená, že ke správnému datu se přiřadí špatnej soubor, takže místo
array_multisort ($soubory[0], SORT_ASC, SORT_NUMERIC); 
dáme
array_multisort ($soubory[0], SORT_DESC, SORT_NUMERIC, $soubory[1]);
Toto téma je uzamčeno. Odpověď nelze zaslat.