lobster Skrevet 18. november 2006 Del Skrevet 18. november 2006 if ($handle = opendir($show)) { while (false !== ($file = readdir($handle))) { Finnes det noen lett måte å sortere filer i en mappe etter dato? eldste sist. takker Lenke til kommentar
endrebjo Skrevet 18. november 2006 Del Skrevet 18. november 2006 (endret) Jeg vet ikke om noen lettere måte enn å bruke FTP. Jeg synes det var en fin utfordring, så jeg laget like gjerne et komplett skript. PHP <?php // VARIABLER $ftp_server = 'ftp.domene.no'; $user = 'brukernavn'; $pass = 'passord'; $modified = array(); // KOBLE TIL $conn_id = ftp_connect($ftp_server) or die('Kunne ikke koble til ftp-serveren'); $login_result = ftp_login($conn_id, $user, $pass); // Sett passiv for å unngå brannmur ftp_pasv($conn_id, TRUE); // FÅ TAK I LISTE OVER FILER $files = ftp_nlist($conn_id, '.'); // LAG LISTE MED filnavn som nøkkel OG timestamp som verdi foreach ($files as $filename) { $modified[$filename] = ftp_mdtm($conn_id, $filename); } // SORTERING SOM TAR VARE PÅ NØKLENE arsort($modified, SORT_NUMERIC); // ASORT for eldste først, ARSORT for eldste sist // PRINT LISTE echo '<ul>'; foreach ($modified as $filename => $timestamp) { if ($timestamp == -1) { $date = '- '; } else { $date = date('Y-m-d H:i:s', $timestamp); } echo "<li>{$date}, {$filename}</li>"; } echo '</ul>'; // LUKK FTP ftp_close($conn_id); ?> Den tar med både filer og mapper, men det er ikke vanskelig å utelukke mappene. Endret 18. november 2006 av endrebjorsvik Lenke til kommentar
lobster Skrevet 18. november 2006 Forfatter Del Skrevet 18. november 2006 Hehe, tusen takk Endre. Var forøvrig overasket over at man må bruke FTP for å få til dette. Trodde det fantes noe "lett" innebygget i PHP. Alså, en liten ferdig funksjon eller.no Men igjen, superduper, takk for hjelp Lenke til kommentar
Martin A. Skrevet 18. november 2006 Del Skrevet 18. november 2006 Etter innspirasjon fra endre sitt script, skrev jeg ett for opendir også. <?php $dir = '.'; $filemod = array(); if($dh = opendir($dir)) { echo '<ul>'; while (($file = readdir($dh)) !== false) { if($file != "." && $file != "..") { $filemod[$file] = filemtime($file); arsort($filemod, SORT_NUMERIC); } } foreach($filemod as $filename => $modtime) { if ($modtime == -1) { $date = '- '; } else { $date = date('d.m.Y H:i:s', $modtime); } echo "<li>".$filename." ".$date."</li>"; } echo '</ul>'; closedir($dh); } ?> Lenke til kommentar
endrebjo Skrevet 18. november 2006 Del Skrevet 18. november 2006 (endret) Ehh... jeg var litt kjapp der ja. Jeg fant filemtime() ikke så lenge etter jeg hadde skrevet FTP-skriptet. Har laget et nytt, men ser at det er ganske likt ditt. Hvorfor har du arsort() inni while-løkken? Klikk for å se/fjerne innholdet nedenfor PHP <?php $dir = '.'; $modified = array(); // SJEKK OM $dir ER EN MAPPE if (is_dir($dir)) { // ÅPNE MAPPE OG SJEKK AT DET GIKK if ($dir_handler = opendir($dir)) { // LOOP GJENNOM ALLE FILER I MAPPEN while (false !== ($file = readdir($dir_handler))) { if ($file !== '..') { // PUTT VERDIER INN I ARRAYET $modified[$file] = filemtime($dir . '/' . $file); } } // LUKK MAPPE closedir($dir_handler); } } // SORTER INNHOLD I ARRAY arsort($modified, SORT_NUMERIC); // SKRIV UT LISTE echo '<ul>'; foreach ($modified as $filename => $timestamp) { $date = date('Y-m-d H:i:s', $timestamp); echo "<li>{$date}, {$filename}</li>"; } echo '</ul>'; ?> Edit: !'; må byttes ut med ! Endret 18. november 2006 av endrebjorsvik Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå