Newsgroup: it.comp.www.php
Titolo: Lettura di file e ordinamento per data

Salve =)
Sto facendo una piccola galleria di immagini, io leggo i file presenti
nella directory, e genero nel codice la struttura della galleria.
Ma le immagini mi vengono ordinate per nome, il che mi sembra giusto,
pero' se volessi ordinarle per data??
Esempio di codice
$dirname="foto";
        $dh=opendir($dirname);
        while($file=readdir($dh)){
                ++$how;
                if($file!="." && $file!=".." && $file!="big"){
                        $ctime=filectime("foto/big/$file");
Cosi' ottengo il nome dei file e le date, ma poi come fare? Mettere
tutto in un Array ed ordinare?? Come ordinare per data??
Grazie in anticipo =)
Whamoo

 tutto in un Array ed ordinare?? Come ordinare per data??
Presumendo che i nomi dei file siano univoci inseriscili in un array
dove la chiave e' il nome del file ed il valore la data (nel formato
YmD). Poi utilizza 
http://www.php.net/sort
 oppure li inserisci in un
array multidimensionale ed utilizzi 
http://www.php.net/array_multisort
-- 
I am what I am, I do what I can
Sei un newbie? Leggi questo 
http://url.repository.biz/go/1
Inviare email con allegati? 
http://url.repository.biz/go/1Z
Cerchi un programmatore PHP/MySQL? 
http://url.repository.biz/go/1Y
L'uomo, conscio di sbagliare, persevera.

 array multidimensionale ed utilizzi 
http://www.php.net/array_multisort
Usando il sort, posso far si che le immagini piu' recenti siamo le
prime?
Grazie mille
Whamoo

 prime?
Certo
Io farei così: inserei tutte le info che ti servono in un array dove 
ogni elemento è un array indicizzato del tipo:
array(
	'nomeimmagine'=>'nome.est';
	'anno'=>date(Y,filemtime('nome.est'));
	'mese'=>date(m,filemtime('nome.est'));
	'data'=>date(D,filemtime('nome.est'));
	'ora'=>date(h,filemtime('nome.est'));	
	/*
	altre info	
	*/
);
poi utilizzeri questa funzione per fare un ordinamento sugli indici:
(cut&paste da 
http://it.php.net/manual/en/function.array-multisort.php
---8<---8<---8<---8<---8<---8<---8<---8<---8<---8<---8<---8<---8<---8<---8<
Ichier (
www.ichier.de
)
14-Jun-2003 10:00
ok, now i made it a real (prooved) function, cause i needed to sort by 
two of the columns and it didn't work, sorting twice...
is was kinda tricky, cause i never handled with eval in php, but now 
it's quite superb - ok i didn't any errorhandling, but who cares *g*
___________
the function:
function array_csort() {  //coded by Ichier2003
    $args = func_get_args();
    $marray = array_shift($args);
    $msortline = "return(array_multisort(";
    foreach ($args as $arg) {
        $i++;
        if (is_string($arg)) {
            foreach ($marray as $row) {
                $sortarr[$i][] = $row[$arg];
            }
        } else {
            $sortarr[$i] = $arg;
        }
        $msortline .= "\$sortarr[".$i."],";
    }
    $msortline .= "\$marray));";
    eval($msortline);
    return $marray;
}
the fine thing is, you can add as many parameters you need, and you can 
add sort_flags as well (but be shure not to put em into " or ' - took 
some time for me to get this *g*)
______
syntax:
$new_array = array_multisort($array [, 'col1' [, SORT_FLAG [, 
SORT_FLAG]]]...);
__________
explanation:
$array is the array you want to sort, 'col1' is the name of the column 
you want to sort, SORT_FLAGS are : SORT_ASC, SORT_DESC, SORT_REGULAR, 
SORT_NUMERIC, SORT_STRING
you can repeat the 'col',FLAG,FLAG, as often you want, the highest 
prioritiy is given to the first - so the array is sorted by the last 
given column first, then the one before ...
_______
example:
in my case the array has it's index as first dimension (i like that for 
using foreach later):
$array[0]['name'] = "Niko";
$array[0]['age'] = 24;
$array[0]['town'] = "Berlin";
$array[1]['name'] = "Dennis";
$array[1]['age'] = 34;
$array[1]['town'] = "Berlin";
$array[2]['name'] = "Oliver";
$array[2]['age'] = 44;
$array[2]['town'] = "Aachen";
$array[3]['name'] = "Andi";
$array[3]['age'] = 34;
$array[3]['town'] = "Berlin";
_____________________
use the function like this:
$array = array_csort($array,'town','age',SORT_DESC,'name');
here the resulting array would be:
$array[0]['name'] = "Oliver";
$array[0]['age'] = 44;
$array[0]['town'] = "Aachen";
$array[1]['name'] = "Andi";
$array[1]['age'] = 34;
$array[1]['town'] = "Berlin";
$array[2]['name'] = "Dennis";
$array[2]['age'] = 34;
$array[2]['town'] = "Berlin";
$array[3]['name'] = "Niko";
$array[3]['age'] = 24;
$array[3]['town'] = "Berlin";
that should be enough :)
.. waiting this fuc to be included to the next php-release *gg*
hope it helps you..Niko
---8<---8<---8<---8<---8<---8<---8<---8<---8<---8<---8<---8<---8<---8<---8<
Ciao

 l'ora?
Si certo (mancanza mia), ma fai attenzione che sia ANNO MESE GIORNO ORA
MINUTI (SECONDI), altrimenti l'ordine non viene corretto.
-- 
I am what I am, I do what I can


 MINUTI (SECONDI), altrimenti l'ordine non viene corretto.
Ok capito !! =)
Grazie mille!
Whamoo