Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Sortiranje fajlova (filemtime)?

[es] :: PHP :: Sortiranje fajlova (filemtime)?

[ Pregleda: 3375 | Odgovora: 4 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

simicicdusan
Kovin

Član broj: 11794
Poruke: 35
195.178.35.*



Profil

icon Sortiranje fajlova (filemtime)?21.03.2004. u 23:36 - pre 214 meseci
Hocu da sortiram fajlove prema vremenu zadnje promene.
Znaci trebalo bi izlistati dir i ubaciti zeljene fajlove u array.
To znam da uradim ali mi problem predstavlja sortiranje.

Kako bi izgledao najjednostavniji kod za to sortiranje?

Da li moze da se koristi usort a da se kao funkcija definise filemtime i ako moze kako?

Ili se mora listati dir i uz svaki fajl da se uzme filemtime i onda u array za keys ubaciti vrednosti filemtime-a a za values ubaciti imena fajlova i onda array sortirati po keys pa izlistati values od array?!?!

Molim vas pomozite.
 
Odgovor na temu

noviKorisnik
Dejan Katašić
Novi Sad

Član broj: 13216
Poruke: 4533
194.247.222.*

Sajt: www.novikorisnik.net


+5 Profil

icon Re: Sortiranje fajlova (filemtime)?22.03.2004. u 07:39 - pre 214 meseci
Ako su ti u nizu samo nazivi fajlova, u funkciji za sortiranje se mora imati podatak o putanji. Recimo da je to globalna promenljiva $dirname:
Code:
function filecmp ($a, $b)
{
    global $dirname;
    if (filemtime ("$dirname$a") < filemtime ("$dirname$b")) return -1;
    return 1;
}

Naravno, poziv je usort ($dirarray, "filecmp");

Nekako, za bilo kakav listing direktorijuma je navika da se prikažu prvo poddirektorijumi pa tek ondak fajlovi.
Code:
function filecmp ($a, $b)
{
    global $dirname;
    if (filetype ("$dirname$a") < filetype ("$dirname$b")) return -1;
    if (filetype ("$dirname$a") > filetype ("$dirname$b")) return 1;
    if (filemtime ("$dirname$a") < filemtime ("$dirname$b")) return -1;
    return 1;
}


Evo jedan drugi primer, u nizu fajlova iz direktorijuma čuvaju se ime, ekstenzija, veličina fileta i datum, pa sad to sve da može da se sortira po bilo kojoj koloni, opadajuće ili rastuće... (odvojeni su nizovi za poddirektorijume i fajlove)
Code:
function filecmp ($a, $b)
{
    if (!isset ($_SESSION ['sortorder']))
        $_SESSION ['sortorder'] = array ('name', 'ext', 'size', 'date');

    $sortorderindex = 0;

    while ($sortorderindex < count ($_SESSION ['sortorder']))
    {
        $order = $_SESSION ['sortorder'] [$sortorderindex++];
        if (substr ($order, 0, 1) == '!')
        {
            $order = substr ($order, 1);
            $pre = 1;
            $after = -1;
        }
        else
        {
            $pre = -1;
            $after = 1;
        }
        if ($a [$order] == $b [$order]) continue;
        else return $a [$order] < $b [$order] ? $pre : $after;
    }

    return 0;
}

 
Odgovor na temu

simicicdusan
Kovin

Član broj: 11794
Poruke: 35
195.178.35.*



Profil

icon Re: Sortiranje fajlova (filemtime)?22.03.2004. u 21:16 - pre 214 meseci
Dobro to za razdvajanje foldera od fajlova znam i to mi sada nije potrebno jer nemam subfolders ali ovaj prvi kod ne radi izgleda da tako ne moze.
Samo bih jos dodao da se kod sortiranja po vremenu poslednje izmene mora koristiti i
Code:
clearstatcache();


Izgleda da je jedino resenje ovo kada se u array za keys ubacuje vrednost filemtime-a a za values ubacuje vrednost readdir-a pa se array sortira po keys pa se onda izlistava samo values iz array-a

Ajde da li jos neko ima neki predlog?
 
Odgovor na temu

noviKorisnik
Dejan Katašić
Novi Sad

Član broj: 13216
Poruke: 4533
*.dialup.neobee.net.

Sajt: www.novikorisnik.net


+5 Profil

icon Re: Sortiranje fajlova (filemtime)?22.03.2004. u 21:41 - pre 214 meseci
Ne znam iz kog razloga ne bi radio prvi kod, izuzev ako je $dirname bez kose crte. Ako je tako: filemtime ("$dirname/$a")
 
Odgovor na temu

simicicdusan
Kovin

Član broj: 11794
Poruke: 35
195.178.35.*



Profil

icon Re: Sortiranje fajlova (filemtime)?22.03.2004. u 22:56 - pre 214 meseci
Evo proverih ponovo i radi kod!!!

Negde sam ja pogresio a morao sam da brzopleto izletim.

Hvala na tako brzom odgovoru i izvini zbog ovoga.

p.s.

Samo da dodam da jo ovo kod koji sortira fajlove po vremenu zadnje promene ali na prvom mestu izbacuje najstarije izmenjeni fajl a ne najskorije izmenjeni fajl no to je najmanji problem.
 
Odgovor na temu

[es] :: PHP :: Sortiranje fajlova (filemtime)?

[ Pregleda: 3375 | Odgovora: 4 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.