ilpostino Skrevet 11. mai 2005 Del Skrevet 11. mai 2005 Jeg har denne løkken som jeg bruker på hjemmesiden min: $directory = opendir("poetry"); $this_filename = $_SERVER['PHP_SELF']; while (false !== ($file = readdir($directory))) { if (!(($file == ".") OR ($file == ".."))) { $file_extension = strrchr($file, '.'); $filesplit = explode(".", $file); for($index = 0; $index < count($file); $index++) { echo("<a href=\"$this_filename?action=show_poetry&name=$file\">$filesplit[0]</a><br>"); } } } closedir($directory); det jeg har funnet ut er at denne løkken bare ramser opp alle filene som er i $directory uten å ta noe særlig hensyn til alfabetisk sortering. noen som vet hvordan jeg skal gjøre det? Lenke til kommentar
Gilbert Skrevet 11. mai 2005 Del Skrevet 11. mai 2005 Nå skriver du ut informasjon om hver fil når du looper gjennom. Det du kan gjøre er å loope gjennom for å lagre alt i et array, sortere arrayet, og skrive ut Lenke til kommentar
Rasmus Skrevet 12. mai 2005 Del Skrevet 12. mai 2005 Når det gjelder koden din studerte jeg den ikke så nøye, så feiltolkninger kan forekommer. Det jeg imidlertid la merke til, er måten du beregner filnavnet på. Denne teknikken vil ikke fungere for filnavn som f.eks. "dette.er.en.fil.med.mange.punktum.txt", da vil nemlig filnavnet bli "dette". Bortsett fra det er det bare et par småting i HTML-koden. Så til en løsning på problemet. Alternativ 1 Legg inn i et array og bruk funksjonen array_multisort. Da kan du sortere på forskjellige nøkler(keys). Alternativ 2 Dersom du benytter PHP5 kan det være interessant å se på scandir. Den kan gjøre nøyaktig det du ber etter. Den sorterer alfabetisk i stigende rekkefølge (som standard). Det eneste du trenger å kode er løkka for å iterere gjennom arrayet. oi, kom i fare for å kode det selv. Denne skal gjøre sånn ca. det du er ute etter. <?php //PHP5 $mappe = "poetry"; $filer = scandir($mappe); $this_filename = $_SERVER['PHP_SELF']; foreach($filer as $fil){ if(!is_dir($fil)){ $filetternavn=substr($fil,strrpos($fil,".")+1); $filnavn=substr($fil,0,(strlen($fil)-strlen($filetternavn)-1)); echo('<a href="'.$this_filename.'?action=show_poetry&name='.$fil.'">'.$filnavn.' ('.$filetternavn.')</a><br />'."\n"); } } ?> Her lister jeg ut alle filer og kataloger til et array. Deretter kjører jeg en foreach-løkke for å skrive ut filene. Her sjekker jeg først at det ikke er en katalog, deretter finner jeg $filetternavn og $filnavn (basert på lengden til $filetternavn). Deretter skriver jeg ut ca. det samme som du ønsket (filetternavn kan du fjerne, men det må fortsatt beregnes). Har modifisert HTML-koden slik at den er gyldig (forutsatt at den plasseres i f.eks. en paragraf <p>). Til slutt. Vær ops på at ikke alle filer har filetternavn. (Kod selv ) Lenke til kommentar
ZoRaC Skrevet 13. mai 2005 Del Skrevet 13. mai 2005 For å finne filetternavn pleier jeg å kjøre en explode på "." deretter en array_reverse og $fil_ext = $array[0]; Lenke til kommentar
LoS Skrevet 13. mai 2005 Del Skrevet 13. mai 2005 I PHP4 kan du fikse dette vel å bruk funksjonen glob istedenfor readdir, så sortere arrayet med en av de passende sorteringsfunksjonenene som php har til arrays. Sjekk ut glob i php-manualen. 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å