Avatar billede stoltenborg Nybegynder
24. januar 2003 - 11:05 Der er 20 kommentarer og
2 løsninger

Automatisk generering af links til filer i mappen.

Hej.
Jeg har en mappe hvori jeg uploader diverse .xls filer. Når mine brugere så klikker ind på mappen, ville jeg gerne hvis de istedet for et fil-index, fik en html el. PHP side med direkte links til de filer der er i mappen. Har hørt at PHP selv kan se mappens indhold, og derudfra lave en side med relevante links.
Problemet er så : Det kan jeg desværre ikke selv finde ud af... Ønskes : idiotsikker vejledning / guide.

På forhånd tak.

//Jan
Avatar billede the_legend Nybegynder
24. januar 2003 - 11:49 #1
<?php
    if ($dh = opendir("mappen navn")) {

        while ($file = readdir($dh)) {
       
                if ($file == "." || $file == ".." || is_dir($file)) continue;

         
            if (eregi(".(xls)$", $file)) {
echo "
    <a href=\"$file\">$file</a><br>

";
            }
        }
    }
?>
Avatar billede the_legend Nybegynder
24. januar 2003 - 11:49 #2
det er utestet så måske kommer der en lille fejl men tror ikke!
Avatar billede stoltenborg Nybegynder
24. januar 2003 - 12:20 #3
Kan jeg bare kopiere dette direkte og kalde filen index.php ??
(Har ændret "mappens navn")
Skal .php filen så "bare" være i samme mappe ??

//Jan
Avatar billede sukos Juniormester
24. januar 2003 - 12:42 #4
Den her er testet, og så kan du lægge den hvor du vil, og kalde den hvad du vil, altså php filen. Den finder så kun .xls filer!

<?php
$sti = dirname($_SERVER['DOCUMENT_ROOT'] . $_SERVER['PHP_SELF']) ."/";

$path = opendir($sti);

$fillist = array();
while (false !== ($dir = readdir($path))){

    if (preg_match("/.xls/", $dir)) {
    $fillist[] = $dir;
    }
}
closedir($path);


sort($fillist);


for($i = 0; $i < count($fillist); $i++) {
    if($fillist[$i] >= 0) {
    echo"<a href=\"". $fillist[$i] ."\">". $fillist[$i] ."</a><br>\n";
    }
}

?>
Avatar billede sukos Juniormester
24. januar 2003 - 12:46 #5
hov, gør hellere så'n, hvis du skule bruge mit eks.

<?php
$sti = dirname($_SERVER['DOCUMENT_ROOT'] . $_SERVER['PHP_SELF']) ."/";

$path = opendir($sti);

$fillist = array();
while (false !== ($dir = readdir($path))){

    if (preg_match("/.xls/", $dir)) {
    $fillist[] = $dir;
    }
}
closedir($path);


sort($fillist);


for($i = 0; $i < count($fillist); $i++) {
    if($fillist[$i] != 0) {
    echo"Desværre ingen xls filer tilgægnlige!";
    }else{
    echo"<a href=\"". $fillist[$i] ."\">". $fillist[$i] ."</a><br>\n";
    }
}

?>
Avatar billede sukos Juniormester
24. januar 2003 - 12:50 #6
fuck!
Avatar billede sukos Juniormester
24. januar 2003 - 12:55 #7
så'n:

<?php
$sti = dirname($_SERVER['DOCUMENT_ROOT'] . $_SERVER['PHP_SELF']) ."/";

$path = opendir($sti);

$fillist = array();
while (false !== ($dir = readdir($path))){

    if (preg_match("/.xls/", $dir)) {
    $fillist[] = $dir;
    }
}
closedir($path);


sort($fillist);
$antal = count($fillist);

    if($antal <= 0) {
    echo"Desværre ingen xls filer tilgængelige!";
    }else{

    for($i = 0; $i < $antal; $i++) {
    echo"<a href=\"". $fillist[$i] ."\">". $fillist[$i] ."</a><br>\n";
    }
}

?>
Avatar billede fangel Nybegynder
24. januar 2003 - 19:14 #8
sukos => hvad med en parentes i anden linie...

$sti = dirname($_SERVER['DOCUMENT_ROOT'] . $_SERVER['PHP_SELF']) ."/");

du kalder jo en funktion...

Morten
Avatar billede sukos Juniormester
24. januar 2003 - 19:18 #9
Ik' i version 4.3.0
:O) (lige en detalje)

Men hva' med et forum? :O)
Avatar billede sukos Juniormester
24. januar 2003 - 19:19 #10
Du laver jo os' en parentes for meget du!
dirname retunerer ikke en skråstreg
Avatar billede sukos Juniormester
24. januar 2003 - 19:19 #11
dea_pg, kan du ikke lige komme på icq?
Avatar billede stoltenborg Nybegynder
25. januar 2003 - 19:17 #12
--->sukos : Prøv dette : www.stoltenborg.info/vplan.php
Jeg har kopieret dit sidste indlæg direkt i en php fil og byttet dirname ud med aktuel dir. Får stadig ikke noget brubart...

//Jan
Avatar billede kinguru Nybegynder
26. januar 2003 - 02:34 #13
Her er en måde man kan gøre det på, jeg har testet den af, så den skulle virke, bruger den også selv! :-)

Du skal self. bare selv smide dir ind ved $dir = opendir("/home/e-smith...

Jeg har modificeret den er sourcecode sådan at den kun skriver .xls filer ud, hvis du f.eks. gerne vil udskrive en liste med .php filer, skal du (hvis det er en linux server) lave lidt om i koden ved " if(!strchr($item,".xlscontinue; ", til:
if(!strchr($item,".php")) continue;
if(strchr($item,".swp")) continue;

Dette er fordi Linux laver en filnavn.php.swp når en bruger requester en side, så hvis du er uheldig at en jar requestet en side når liste bliver fremvist, så kommer der et mærkeligt link til en filnavn.php.swp, og det er jo ikke for fedt! :)



#sourcecode:

$dir = opendir("/home/e-smith/files/primary/html/");
$link_start = "<a href=\"$dir";

echo "<font size=\"2\">";

while($item = readdir($dir)) {
    if(!strchr($item,".xls")) continue;
   
    echo $link_start . $item . "\">" . $item . "</a><br>\n";
}
closedir($dir);
echo "</font>";




mvh Michael
Avatar billede sukos Juniormester
26. januar 2003 - 14:31 #14
dirname() er en funktion i PHP
http://dk.php.net/manual/en/function.dirname.php
Så når du bruger "vagtplan", ja så funker det ikke.
dirname er her brugt for at du blot gemmer i hvilken som helst dir, og fra det dir læser igennem for xls filer.
Altså, du skal ikke ændre noget, andet end hvis du ville vise noget andet end xls filer
Avatar billede stoltenborg Nybegynder
26. januar 2003 - 16:35 #15
Kan sq stadig ikke få det til at virke... Fik ellers det første forslag fra the legend til at virke, men nu kører det ikke... Har prøvet at kopiere det sidste forslag fra sukos ind, men uden held... Hvad gør jeg galt ??
Kører Win2000, Apache 2.0.44 og PHP 4.3.0

//Jan

www.stoltenborg.info/vplan.php
Avatar billede ksostack Nybegynder
26. januar 2003 - 17:45 #16
Dette virker:
<?php
$sti = dirname($_SERVER['DOCUMENT_ROOT'] . $_SERVER['PHP_SELF']);

$path = opendir($sti);

$fillist = array();
while (false !== ($dir = readdir($path))){

    if (preg_match("\".xls\"", $dir)) {
    $fillist[] = $dir;
    }
}
closedir($path);


sort($fillist);
$antal = count($fillist);

    if($antal <= 0) {
    echo"Desværre ingen xls filer tilgængelige!";
    }else{

    for($i = 0; $i < $antal; $i++) {
    echo"<a href=\"". $fillist[$i] ."\">". $fillist[$i] ."</a><br>\n";
    }
}

?>

//ksostack
Avatar billede stoltenborg Nybegynder
26. januar 2003 - 20:18 #17
Tak til alle for hjælpen. Fik det sidste indlæg fra ksostack til at virke.
Hvad hvis der er flere slags fil navne i samme mappe ? (eks. .xls + .doc) ??

//Jan
Avatar billede fangel Nybegynder
26. januar 2003 - 20:21 #18
så lister den kun dem der indeholder .xls i filnavnet... hvis du vil have den til at liste .doc, skal du kigge på linien

if (preg_match("\".xls\"", $dir)) {

du kan nok selv se systemet...

Morten
Avatar billede stoltenborg Nybegynder
26. januar 2003 - 20:30 #19
Hvad hvis den skal liste BÅDE .xls og .doc ??
Avatar billede fangel Nybegynder
26. januar 2003 - 20:39 #20
if(ereg("(\.xls|\.doc)$",$dir)){

og hvis den også skal vise .msg

if(ereg("(\.xls|\.doc|\.msg)$",$dir)){

tror du kan se systemet nu...

Morten
Avatar billede crazy_legs Nybegynder
10. august 2006 - 11:43 #21
Hvis man nu har upload.php filen til at ligge i mappe A, men vil have den til at liste filer i en undermappe, f.eks. A/uploads  , hvad skal så ændres i koden?
Avatar billede crazy_legs Nybegynder
10. august 2006 - 12:09 #22
nevermind, fandt et scipt der passer perfekt til mig :)


<?
$handle=opendir('./billeder');
while (false !== ($file = readdir($handle))) {
    if($file != "." && $file != "..") {
        echo "<a href='./billeder/".$file."'>".$file."</a><br />";
    }
}
closedir($handle);
?>
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