Avatar billede lassel Nybegynder
02. juni 2003 - 18:21 Der er 15 kommentarer og
2 løsninger

Alfabetisk liste af filer i hoved og undermapper

Hmmmm, jeg er kørt træt i problemet :o(

Målet er et script der kan: liste alle filer fra biblioteket .php-filen ligger i plus alle andre filer i undermapper til dette bibliotek. Listen skal "kun" bestå af navnene på filerne, ikke bibliotekerne og listen skal være sorteret alfabetisk :o) det sidste er vel bare når man har sat variablen bruge sort-funktion: sort($filliste);

Jeg har kigget mange af mulighederne ud her på eksperten.dk, og alle er gode... men jeg ender altid med et script der sorterer alfabetisk alle filer og mapper i hovedmappen... Men mapper skulle ikke vises, og pågældende filer skulle være alle fra hoved-bib til sub-bibs i sub-bibs i sub-bibs, if ya know what I mean :o)

Håber i forstår og vil hjælpe mig :o)

På forhånd tak.
Avatar billede lassel Nybegynder
02. juni 2003 - 18:23 #1
listen skulle være i en pærevælling, så det hele ender ud i en lang lsite af filer sorteret i alfabetisk rækkefølge uden der vises hvilke bibs de ligger i :o)
Avatar billede schaefner Juniormester
02. juni 2003 - 18:25 #2
Prøv at komme med det dy allerede har.
Avatar billede ohmish Nybegynder
02. juni 2003 - 18:32 #3
Voila:

<?php
$dir = "./";
$search = "";
function listdir($dir,$search) {
    $mappe = opendir($dir) or die ("mappe ikke fundet");
    while($fil = readdir($mappe)) { 
        if ($fil != "." && $fil != "..") {
        if ( is_dir( $dir . $fil ) ) {
    echo "<b>$fil</b><br>";
        listdir( $dir .$fil ."/", $search); }
        elseif ( preg_match("/$search/i", $fil) ) {
    echo "<b>$fil</b><br>"; }
    $count++; } }
}
listdir($dir, $search);
?>
Avatar billede fangel Nybegynder
02. juni 2003 - 18:36 #4
ohmish => du missede den evigt vigtige sort() (først skal alle filer i et array, men alligevel), da det jo skal være alfabetisk ;) ;) ;)

og måske du skulle lave en stop-klods så den ikke kan køre i det uendelige (ja, nogle har faktisk store harddiske, eller nyder at se hvor meget man kan snyde rekursive funktioner ;)

og husk, exp.dk er alt om viden og dårlig humor, og intet om pæne piger ;)

Morten
Avatar billede ohmish Nybegynder
02. juni 2003 - 18:38 #5
hehe... jamen så tillad mig at poste noget fra codewalkers.com:

<?php

$homedir = "demo_client";
$dir = opendir("$homedir");
while(FALSE != ($file = readdir($dir)))
{
if($file != "." && $file != "..")
{
$myFiles[] = "$file";
}
}
closedir($dir);

// now sort your array for display..
// this sort is pretty common for alphabetic or numerical
$myFiles = sort($myFiles);
foreach($myFiles as $value)
{
echo "<a href=\"demo_client/$value\">$value</a><br>\n";
}

?>
[/php]
Avatar billede ohmish Nybegynder
02. juni 2003 - 18:39 #6
pæne piger siger du!? vuf hvor? vuf
Avatar billede ohmish Nybegynder
02. juni 2003 - 18:40 #7
hov... sådan:

<?php

$homedir = "demo_client";
$dir = opendir("$homedir");
while(FALSE !== ($file = readdir($dir)))
{
if($file != "." && $file != "..")
{
$myFiles[] = "$file";
}
}
closedir($dir);

// now sort your array for display..
// this sort is pretty common for alphabetic or numerical
sort($myFiles);
reset($myFiles);
foreach($myFiles as $value)
{
echo "<a href=\"demo_client/$value\">$value</a><br>\n";
}

?>
Avatar billede ohmish Nybegynder
02. juni 2003 - 18:41 #8
det er ret let at sammensætte de to scripts til ét velfungerende.
Avatar billede fangel Nybegynder
02. juni 2003 - 18:43 #9
ohmish => nu sagde jeg jo _intet_ om pæne piger... jeg kender i hvert fald ingen pæne piger på exp.dk, som kunne falde for en person bare fordi han kan side 5 timer foran computeren og svaret på spørgsml "hvad lavede du" er "tja... eksperten"!

men husk, PHP er eng. så den vil ikke helt overkomme æ,ø,å osv... og det skal lige bygges ind i din rekursive funktion...

Morten
Avatar billede ohmish Nybegynder
02. juni 2003 - 18:51 #10
Morten-med-det-alt-for-fede-navn> du har da ret i mange ting. og jeg har os' svaret på nok spørgsmål for nu. men der popper hele tiden noget op i postkassen! men det ska være slut... nu ska jeg ud og finde mig en lækker php-pige der ka sige æææh-ååååh-øøøøh.
Avatar billede fangel Nybegynder
02. juni 2003 - 18:57 #11
jammen held og lykke

synes også selv det er et godt navn!

Morten
Avatar billede lassel Nybegynder
02. juni 2003 - 19:30 #12
Amen, selvfølgelig meget flot i svarer så hutigt osv, men i læser altså ikke nøjagtig min problemløsninge :o(

Jeg ahr selv fundet frem til en sådan løsning, MEN: scriptet skulle endere sortere _ALLE_ filer fra mappen til subdirs fra mappen. Det gælder f.eks. filer i mappen: /hovedbib/sbdir1/subdir2/subdir3

Det gør problemet lidt komplekst da scritet selv skal hitte ud af disse bibs, ogs selvom nogle af dem er der mellemrum i navn osv. Lige så skal scriptet kunne liste filnnavne med æøå og mellemrum. Håber i forstår og vil prøve at pusle med det.

Hov, og listen må ikke indholde navnene på diverse biblioteker, _KUN_ navnene på filerne fra hovedbibliotek og underbibklioteker i en alfabetisk pærrevælling.
Avatar billede fangel Nybegynder
02. juni 2003 - 19:39 #13
som ohmish skrev kl 18:41:53, "det er ret let at sammensætte de to scripts..."

altså skal du også arbejde selv...

---

men for at du ikke skal føle dig skuffet, så er løsningen her:

--
<?php
$Files = array();

function listdir($dir) {
    global $Files;
    $mappe = opendir($dir) or die ("mappe ikke fundet");
    while($fil = readdir($mappe)) {
        if ($fil != "." && $fil != "..") {
            if ( is_dir( $dir . $fil ) ) listdir( $dir . $fil ."/"); }
            elseif( is_file($dir . $fil) ) $Files[] = $dir . $fil;
        }
    }
}

$filer = listdir("./"); // den mappe du vil starte i

sort($filer);
unset($filer);

foreach($filer AS $key=>$value){
  echo $key . ": " . $value . "<br>\n";
}

?>
---

men husk at give point til ohmish... det er jo hans scripts... (har bare moddet dem lidt, fx fjernet muligheden for at søge efter filer... ;)

Morten
Avatar billede lassel Nybegynder
02. juni 2003 - 20:16 #14
ahhh, okay... jeg begynder at kunne se det :o) Takker.
MEN, i din opsamling dea_pg:

<?php
$Files = array();

function listdir($dir) {
    global $Files;
    $mappe = opendir($dir) or die ("mappe ikke fundet");
    while($fil = readdir($mappe)) {
        if ($fil != "." && $fil != "..") {
            if ( is_dir( $dir . $fil ) ) listdir( $dir . $fil ."/"); }
            elseif( is_file($dir . $fil) ) $Files[] = $dir . $fil;
        }
    }
}

$filer = listdir("./"); // den mappe du vil starte i

sort($filer);
unset($filer);

foreach($filer AS $key=>$value){
  echo $key . ": " . $value . "<br>\n";
}

?>

... er der parse-error ved:
        }
    }
}
... da den ene allerede bliver afsluttet lidt før, så jeg har slettet den sidste... ovre det problem.
MEN, så er der to nye problemer:

Warning: sort() expects parameter 1 to be array, null given in /.../.../.../liste.php on line 16

Warning: Invalid argument supplied for foreach() in /.../.../.../liste.php on line 19

Linie 16:
sort($filer);

Linie 19:
foreach($filer AS $key=>$value){

Ang. sort, er det så noget server-halløjsa der skal slåes til?, hvis ja, kna man så ikke gøre det vha. af script i dette tilfælde?

Ang. foreach, hvis ikke funktionen er korrekt og hedder foreach(), hvad hedder den så? Jeg bruger PHP Version 4.3.1

På forhånd tak allerede...
Avatar billede styrup-dk Nybegynder
02. juni 2003 - 23:01 #15
Ang. dine problemer.
Jeg har rette lidt i koden og dette virker for mig.
Der manglede bla. et return i function listdir($dir)
<?php
$Files = array();
function listdir($dir)
{
    global $Files;
    $mappe = opendir($dir) or die ("mappe ikke fundet");
    while($fil = readdir($mappe))
        {
        if ($fil != "." && $fil != "..")
            {
            if ( is_dir( $dir . $fil ) ) listdir( $dir . $fil ."/");
           
            elseif( is_file($dir . $fil) ) $Files[] = $dir . $fil;
            }
        }
return $Files;
}

$filer = listdir("../test/"); // den mappe du vil starte i
sort($filer);
foreach ($filer as $key => $value)
{
    echo "Key: $key; Value: $value<br>\n";
}
?>
Avatar billede lassel Nybegynder
03. juni 2003 - 09:53 #16
ahhhh, det virker... tak skal du have :) Det ser ud nøjagtig som jeg ville have det nu :)

Kan du ikke oprette som et svar også. så kan jeg fordele point mellem jer alle tre for en god indsats :o)
Avatar billede styrup-dk Nybegynder
05. juni 2003 - 08:37 #17
Giv du bare pointne til de 2 andre, det var dem der lavede det hårde arbejde ;)
Jeg er bare glad for at kunne hjælpe.
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