lobster Skrevet 18. november 2006 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
endrebjo Skrevet 18. november 2006 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
lobster Skrevet 18. november 2006 Forfatter 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
Martin A. Skrevet 18. november 2006 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); } ?>
endrebjo Skrevet 18. november 2006 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
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å