Avatar billede tipman Juniormester
25. august 2010 - 11:08 Der er 11 kommentarer og
1 løsning

Liste biblioteker efter dato

Jeg har brug for følgende:
Et script som samler oplysninger om filnavne, størrelse og dato  i 3 biblioteker. Derefter skal den sortere dem i datoorden med den nyeste øverst. Så skal den liste de 5 nyeste filer op med information størrelse og dato. Den skal altså finde de 5 nyeste filer på tværs af bibliotekerne, bibliotekerne har ikke yderligere underbiblioteker.

./filer1/
./filer2/
./filer3/
Avatar billede majbom Novice
25. august 2010 - 16:08 #1
du skal bare have en liste over de 5 nyeste filer i alle 3 biblioteker til sammen?
Avatar billede tipman Juniormester
25. august 2010 - 16:31 #2
Ja nemlig. Scanne alle 3 biblioteker igennem og dermed vælge de 5 nyeste filer ud, uanset hvilket bibliotek de kommer fra. Den skal bruges til at præsentere de nyeste indlæg på min forside.

Det er senere meningen at scriptet skal virke i flere eller færre biblioteker, men det kan jeg nok se mig ud af.
Jeg kan godt lave noget som lister filerne op, men jeg kan ikke rigtig få dem sorteret, det er mit store problem. Altså det med at sortere efter datoen i et array, som nok skal have flere dimensioner.
Avatar billede majbom Novice
25. august 2010 - 19:12 #3
jeg bruger denne funktion til at hente filer i en mappe sorteret efter dato:

function globByDate($dir){
  $files = glob($dir);
  $files_mod_time = array();
  foreach($files AS $file){
      $files_mod_time[] = filemtime($file);
  }
  array_multisort($files_mod_time, $files);
  return $files;
}


den kan let ændres til at tage indholdet fra 3 mapper...
Avatar billede tipman Juniormester
25. august 2010 - 20:08 #4
Kunne du vise mig hvordan den ser ud hvis den skal gennemsøge 3 mapper og hvordan du så printer fx 5 nyeste filer ud?
Jeg har set den der på nettet andre steder også.
Avatar billede majbom Novice
25. august 2010 - 20:40 #5
hvis du har dine 3 mapper i en mappe (lad os kalde den 'mapper') som så ligger i samme mappe som dit script, skal du faktisk bare sætte stien til 'mapper/*/*', så henter den alle filerne i de 3 mapper.

og så er det jo bare at lave en for-løkke der kører 5 gange for at udskrive de 5 nyeste...
Avatar billede tipman Juniormester
25. august 2010 - 20:55 #6
ok, den overvejer jeg lige...
Avatar billede tipman Juniormester
26. august 2010 - 09:06 #7
Jeg har nu lavet følgende mapper
rod - test - test1
          - test2
          - test3

Jeg har prøvet scriptet nedenfor med ./test/*, test/* og ./test/*/*, men jeg får ikke noget ud af min fil, hvad gør jeg galt? Jeg er altså ikke en haj til php.

<?php
function globByDate($dir){
  $files = glob($dir);
  $files_mod_time = array();
  foreach($files AS $file){
      $files_mod_time[] = filemtime($file);}
  array_multisort($files_mod_time, $files);
  return $files;}



globByDate('test/*');
    foreach($files as $f){
        echo $f;}

?>
Avatar billede tipman Juniormester
26. august 2010 - 12:46 #8
Jeg fandt selv en løsning på ovenstående, meeeennnn.

Nu har jeg sådan nogle åndsvage datoer fra filerne, hvordan oversætter man dem til dd-mm-yyyy?
Avatar billede majbom Novice
26. august 2010 - 18:20 #9
hvordan ser de ud?

kan du ikke splitte dem op med noget substr() og samle dem igen?
Avatar billede tipman Juniormester
27. august 2010 - 10:49 #10
datoerne kommer i sekunder fra 1970, fandt også selv en løsning i gør.
Splazz vil du sende et svar, så giver jeg point.
Avatar billede majbom Novice
27. august 2010 - 12:24 #11
nå okay, godt nok :)
Avatar billede majbom Novice
27. august 2010 - 12:36 #12
tfp :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester