- Home
- Categorie
- Coding e Sistemistica
- PHP
- ordinare file per data
-
ordinare file per data
ciao a tutti
avrei un bisogninoio ho una directory in cui vengono creati dei fil e di testo con questo formato:
cliente-last-update-stock-05-06-2008---15-52-45.txt
la prima serie di numeri è il giorno la seconda invece è l'ora
i file nella directory li leggo così:
[PHP]
<?php
if ($handle = opendir('/web/htdocs/dominio/home/caartella/')) {
while (false !== ($file = readdir($handle)))
{
if ($file != "." && $file != "..") {
echo "<a href="../cartella/$file" target="_blank">$file</a><br>\n";
}
}
closedir($handle);
}
?>
[/PHP]Ora mi chiedevo cè un modo per stampare a video i file in ordine per ultima modifica??
nel senso se un file è stato scritto il 24/07/2008 alle ore 16:09
e uno è stato scritto il 24/07/2008 alle ore 16:15cè un modo con cui io posso scegliere l'ordine??
spero di essermi spiegato
vi ringrazio
un saluto
-
Prendi tutti i file in un array, parsi il nome dei file per ottenere da data e l'ora (con una regex magari), ne ricavi il timestamp, e fai un sort dell'array in base a quello.
Purtroppo sto scappando e non ho tempo di fartelo..
-
Io ti dico che la funzione per vedere l'ultima modifica dei file è filemtime()
-
soluzione trovata
[PHP]
$arrayfile = Array();
function ordina($file1,$file2)
{
$tempo1 = filectime($file1);
$tempo2 = filectime($file2);
return ($tempo1 < $tempo2) ? 1 : -1;
}
if ($handle = opendir('/web/htdocs/domain/home/customer/update_stock/'))
{
while (false !== ($file = readdir($handle)))
{
if ($file != "." && $file != "..") {
$arrayfile[]='../customer/update_stock/'.$file;
}
}
closedir($handle);
usort($arrayfile,'ordina');
//print_r($arrayfile);
foreach($arrayfile as $txt)
{
echo "<a href="$txt" target="_blank">".str_replace("../customer/update_stock/","",$txt)."</a><br>\n";
}
}
clearstatcache();
[/PHP]
-
@Jeeves said:
Io ti dico che la funzione per vedere l'ultima modifica dei file è filemtime()
Giusto, io ho erroneamente capito che doveva farlo a seconda della data scritta nel nome del file!
Ti scrivo il codice, punkrazio:
Non è assolutamente la soluzione migliore, ma andavo di fretta e l'ho fatto nel primo modo che mi passava per la testa.. non ho potuto neanche testarlo, se non funziona dimmi che errori ti dà..
[php]<?php
$fl= array();
$ft= array();
if ($handle = opendir('/web/htdocs/dominio/home/caartella/')) {
while (false !== ($file = readdir($handle)))
{
if ($file != "." && $file != "..") {
$fl[] = array($file, filemtime('/web/htdocs/dominio/home/caartella/'.$file));
}
}
closedir($handle);
}A questo punto in $fa abbiamo tutti i file sottoforma di array (nomefile, ultima modifica)
foreach ($fl as $t) {
$tos[] = $t[1];
}
array_multisort($tos, SORT_DESC, $fl);Adesso, $fl è ordinato secondo la data di modifica.
foreach ($fl as $t) {
echo "<a href="../cartella/".$t[0]."" target="_blank">".$t[0]."</a><br>\n";
}
?> [/php]EDIT: Tò, in ritardo. xD
-
Ciao Trackback
Interessante anche questo tutorial.
Senti ma è possibile fare questa identica cosa
però sui files di tutte le cartelle e sottocoartelle?
Cioè la lista dei files di tutte le cartelle, ordinate per data di modifica?
Ciao grazie
-
nel caso volessi stampare nome, data e dimensione del file insieme? come potrei modificare?