Avatar billede tzinck Novice
13. oktober 2004 - 13:46 Der er 47 kommentarer og
1 løsning

PHP script til dokumentsøgning

Jeg har en masse dokumenter (ca. 10000), der ligger i et dir + subdirs på Linux.  Jeg vil gerne oprette links til dokumenterne fra en html/php side.  Jeg har hørt at et php script kan gøre arbejdet med søgning og oprettelse af links for mig.

Hvor finder jeg sådan et script ?
Avatar billede Slettet bruger
13. oktober 2004 - 13:55 #1
Skal det være så du kan søge i indholdet, eller blot en hierakisk oversigt? (en lang liste med links)
Avatar billede tzinck Novice
13. oktober 2004 - 14:00 #2
en lang liste med links.

Der er tale om ca.

50 kunder (med hvert deres dir)
500 varenumre (subdirs til kunder)
10000 filer/dokumenter

Jeg skal kunne skelne hvert enkelt dir/subdir fra hinanden
Avatar billede hmortensen Nybegynder
13. oktober 2004 - 14:06 #3
Noget i den her retning. Du kan lige selv smide links ind. skulle være til at se.

<?php

function readsubdirs($dir, $subdirs) {
    if (is_dir($dir)) {
        if ($dh = opendir($dir)) {
            while (($file = readdir($dh)) !== false) {
                if ($file != "." && $file != "..") {
                    $spaces = "";
                    for ($i = 0; $i < $subdirs; $i++) {
                        $spaces .= "&nbsp;&nbsp;&nbsp;";
                    }
                    echo $spaces;
                    if (is_dir($dir."/".$file)) {
                        echo "-><font color='green'>$file</font><br>";
                        readsubdirs($dir."/".$file, $subdirs+1);
                    } else {
                        echo "$file ($dir)<br>";
                    }
                }
            }
        }
        closedir($dh);
    }
}

readsubdirs("mappenavn",0);

?>
Avatar billede tzinck Novice
14. oktober 2004 - 08:45 #4
Hej
Jeg kan ikke rigtigt få det til at virke - og jeg ved INTET om php overhoved - kan du hjælpe mig (så sætter jeg lige lidt flere points på højkant)
Avatar billede hmortensen Nybegynder
14. oktober 2004 - 09:13 #5
<?php
//Her skal du skrive mappen der skal udlæses fra
$path = "sti/til/mappe";

function readsubdirs($dir, $subdirs) {
    if (is_dir($dir)) {
        if ($dh = opendir($dir)) {
            while (($file = readdir($dh)) !== false) {
                if ($file != "." && $file != "..") {
                    $spaces = "";
                    for ($i = 0; $i < $subdirs; $i++) {
                        $spaces .= "&nbsp;&nbsp;&nbsp;";
                    }
                    echo $spaces;
                    if (is_dir($dir."/".$file)) {
                        echo "-><font color='green'>$file</font><br>";
                        readsubdirs($dir."/".$file, $subdirs+1);
                    } else {
                        echo "<a href=\"".$dir."/".$file."\">".$dir."/".$file."</a><br>";
                    }
                }
            }
        }
        closedir($dh);
    }
}

readsubdirs($path,0);

?>
Avatar billede tzinck Novice
14. oktober 2004 - 09:22 #6
Sådan ???  - det virker ikke


<?php
//Her skal du skrive mappen der skal udlæses fra
$path = "/billeder/";

function readsubdirs($dir, $subdirs) {
    if (is_dir($dir)) {
        if ($dh = opendir($dir)) {
            while (($file = readdir($dh)) !== false) {
                if ($file != "." && $file != "..") {
                    $spaces = "";
                    for ($i = 0; $i < $subdirs; $i++) {
                        $spaces .= "&nbsp;&nbsp;&nbsp;";
                    }
                    echo $spaces;
                    if (is_dir($dir."/".$file)) {
                        echo "-><font color='green'>$file</font><br>";
                        readsubdirs($dir."/".$file, $subdirs+1);
                    } else {
                        echo "<a href=\"".$dir."/".$file."\">".$dir."/".$file."</a><br>";
                    }
                }
            }
        }
        closedir($dh);
    }
}

readsubdirs($path,0);

?>
Avatar billede tzinck Novice
14. oktober 2004 - 09:23 #7
selve filerne ligger godtnok på en windowsmaskine
Avatar billede hmortensen Nybegynder
14. oktober 2004 - 09:25 #8
Øhh, du siger først at filerne ligger på en linux maskine, og nu ligger de på en windows maskine.

Ligger filerne på samme maskine som webserveren kører på ?
Avatar billede tzinck Novice
14. oktober 2004 - 09:25 #9
Fre browseren har jeg lavet et link, der kalder scriptet.  Scriptet ligger i "Dokumenter" dir. Der findes et subdir der hedder "billeder".  I billeder ligger der 1 billede (bare for at teste)
Avatar billede hmortensen Nybegynder
14. oktober 2004 - 09:27 #10
Ligger filerne på klient maskinen ?

Hvis ja, kan det ikke lade sig gøre med php, da det arbejder server-side
Avatar billede tzinck Novice
14. oktober 2004 - 09:27 #11
ja altså i går regnede jeg med at filerne ville blive lagt på en linux maskine - det bliver de senere.  Lige nu ligger de på en win XP maskine - det gør scriptet også -gør det nogen forskel ?
Avatar billede hmortensen Nybegynder
14. oktober 2004 - 09:29 #12
Kan windows maskinen kører php ?

Ligger filerne inden for webserverens rod ?
Avatar billede tzinck Novice
14. oktober 2004 - 09:30 #13
ved ikke ? - Det er ikke mig der har sat maskinen op
Avatar billede tzinck Novice
14. oktober 2004 - 09:31 #14
skal vi flytte det hele til linux maskinen - det er jo ikke den store opgave
Avatar billede hmortensen Nybegynder
14. oktober 2004 - 09:31 #15
Det blir du nødt til at finde ud af først
Avatar billede tzinck Novice
14. oktober 2004 - 09:51 #16
nu kører det på linuxmaskinen - og linux kører
Avatar billede tzinck Novice
14. oktober 2004 - 09:52 #17
men det virker stadig ikke
Avatar billede tzinck Novice
14. oktober 2004 - 09:52 #18
php kører var selvfølgelig det jeg mente
Avatar billede hmortensen Nybegynder
14. oktober 2004 - 09:57 #19
Mappen der skal ledes i, skal ligger under web roden.
Hvis web roden er:
/home/username/wwwroot/

Skal mappen fx. ligge i:
/home/username/wwwroot/mappe/
Avatar billede tzinck Novice
14. oktober 2004 - 09:57 #20
nu får jeg denne besked:

$file
"; readsubdirs($dir."/".$file, $subdirs+1); } else { echo "$file ($dir)
"; } } } } closedir($dh); } } readsubdirs("mappenavn",0); ?>
Avatar billede tzinck Novice
14. oktober 2004 - 09:58 #21
ok - det prøver jeg
Avatar billede tzinck Novice
14. oktober 2004 - 10:05 #22
den ligger i roden (siger min IT mand)
Avatar billede hmortensen Nybegynder
14. oktober 2004 - 10:06 #23
Så prøv uden /
$path = "billeder";

Jeg har lige testet scriptet, og det virker perfekt her.
Avatar billede tzinck Novice
14. oktober 2004 - 10:12 #24
samme besked:

$file
"; readsubdirs($dir."/".$file, $subdirs+1); } else { echo "$file ($dir)
"; } } } } closedir($dh); } } readsubdirs("mappenavn",0); ?>

Hvad kan der være galt ?
Avatar billede hmortensen Nybegynder
14. oktober 2004 - 10:13 #25
Det ser ud til du ikke har kopieret det rigtigt ind
Avatar billede tzinck Novice
14. oktober 2004 - 10:20 #26
scriptet ?
Avatar billede hmortensen Nybegynder
14. oktober 2004 - 10:21 #27
Ja, den burde ikke udskrive scriptet på skærmen
Avatar billede tzinck Novice
14. oktober 2004 - 10:24 #28
jeg åbner filen i en browser - er det ok ?
Avatar billede hmortensen Nybegynder
14. oktober 2004 - 10:26 #29
Ja
Prøv at lave en ny fil på webserveren, som kun indeholder:

<?php
phpinfo();
?>

Så skulle der gerne komme en masse informationer om serveren, opsætningen, hvis php virker
Avatar billede tzinck Novice
14. oktober 2004 - 10:26 #30
det ser meget rigtigt ud...
Avatar billede tzinck Novice
14. oktober 2004 - 10:28 #31
prøver
Avatar billede tzinck Novice
14. oktober 2004 - 10:31 #32
php ver 4.1.2

Og så en længere smøre bagefter - er der noget bestemt jeg skal kigge efter ?
Avatar billede tzinck Novice
14. oktober 2004 - 10:33 #33
Der er nogle ting der står disabled ved :

- Virtual directoru support
- Zend_debug
- Thread safety
Avatar billede hmortensen Nybegynder
14. oktober 2004 - 10:35 #34
Så skal scriptet også virker.

Kontroller lige at du kan har linierne fra <?php til ?>
Avatar billede tzinck Novice
14. oktober 2004 - 10:56 #35
består af 26 linier i alt både her og i det "virkelige script"

jeg har bruge copy and paste - det burde være 100% identisk
Avatar billede tzinck Novice
14. oktober 2004 - 10:58 #36
nå - jeg må se på det igen i morgen
Avatar billede hmortensen Nybegynder
14. oktober 2004 - 11:01 #37
Har du en adr til siden, så jeg lige kan se hvad den gør ?

Demo af scriptet:
http://test.no-mercy.dk/1.php
Avatar billede tzinck Novice
15. oktober 2004 - 08:22 #38
Den ligger på en lokal server - men jeg prøver lige at finde et sted at uploade den
Avatar billede tzinck Novice
15. oktober 2004 - 08:49 #39
http://www.zincks.dk/dir-test.php

nu skete der noget - nu er vi vist tæt på - Den læser filer, men kun i 2 niveauer (læser ikke filer i subdirs til subdirs)

Sætter lige point op til 150
Avatar billede hmortensen Nybegynder
15. oktober 2004 - 09:09 #40
Det gør den så hos mig...

Sikker på der er filer i de undermapper ?
Avatar billede tzinck Novice
18. oktober 2004 - 08:17 #41
Ja, der er filer i subdirs
Avatar billede tzinck Novice
18. oktober 2004 - 08:22 #42
NEJ - DER ER S.. DA INGEN FILER I DE DIRS - SORRY
Avatar billede hmortensen Nybegynder
18. oktober 2004 - 08:24 #43
Ok, virker det så nu ?
Avatar billede tzinck Novice
18. oktober 2004 - 08:28 #44
ha ha - så virker det sørme - hold kæft hvor sejt - mange mange tak - for hjælpen og ikke mindst for din store tålmodighed - Du har virkelig fortjent de 150 point + 50 point i bonus.

Hit med et svar

tzinck
Avatar billede tzinck Novice
18. oktober 2004 - 12:03 #45
Lige eet spm. mere :-)

Det virker stadig ikke på den interne server - Betyder det noget at jeg kører php ver 4.1.2 ?
Avatar billede hmortensen Nybegynder
18. oktober 2004 - 12:15 #46
Prøv at udskifte:
while (($file = readdir($dh)) !== false) {
med:
while ($file = readdir($dh)) {
Avatar billede tzinck Novice
22. oktober 2004 - 10:37 #47
Fortsættelse følger her hvis du har lyst til at deltage :
http://eksperten.dk/spm/553219
Avatar billede tzinck Novice
22. oktober 2004 - 10:39 #48
ps - det virker forresten også internt nu :-)
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