Gå til innhold

Sortere liste etter dato (fra opendir)


Anbefalte innlegg

Videoannonse
Annonse

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_idTRUE);

 

// 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($modifiedSORT_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 av endrebjorsvik
Lenke til kommentar

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

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 &#33;== ($file = readdir($dir_handler))) {

 

if ($file &#33;== '..') {

// PUTT VERDIER INN I ARRAYET

$modified[$file] = filemtime($dir '/' $file);

}

}

 

// LUKK MAPPE

closedir($dir_handler);

}

}

 

// SORTER INNHOLD I ARRAY

arsort($modifiedSORT_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 av endrebjorsvik
Lenke til kommentar

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 konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...