[php] is_dir() wil niet?

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik ben een soort filebrowser aan het maken, maar nu zit ik een beetje met een probleem.

de code:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
//get array with filelist
 $hndl_dir = opendir($str_dir);
 while (false !== ($str_filename = readdir($hndl_dir))) {
   $arr_filelist[] = $str_filename;
 }

//loop through files
 if(!is_array($arr_filelist)){
  //array is not an array
   exit("Error: Array expected not found");
 }
  for($i=0;$i < count($arr_filelist);$i++){
     //check if it is a dir
    if(is_dir($arr_filelist[$i])){
     //link to Filebrowser with dirname
      echo "<a href=\"FileBrowser.php?Action=ShowDir&Dir=$arr_filelist[$i]\">$arr_filelist[$i]</a><br>";
    }else{
     //link to file
      echo "<a href=\"http://$str_ServerIP/<absolutepath>/$arr_filelist[$i]\">$arr_filelist[$i]</a><br>"; 
    }
  }


ik krijg nu wel een overzicht van alle dingen die in de dir staan (inclusief de directorys die er dus weer in staan), maar hij herkent dirs niet ?

de output die ik krijg:
.
..
test.mp3
Testdirretje
test.mp3 is een gewoon mp3-bestand, testdirretje is een directory. op eenofandere manier geeft is_dir bij . en .. wel aan dat het een dir is en bij Testdirretje niet? (de link klopt niet).
wat doe ik fout?

edit:
ter verduidelijking:
code:
1
2
3
4
5
6
7
8
|/home/mp3/Music               (dit is de $str_dir)
        ||
         \\
          | test.mp3
          | Testdirretje
                    ||
                     \\
                      |ding.ding    (testbestandje)

[ Voor 21% gewijzigd door Verwijderd op 27-04-2004 12:51 ]


Acties:
  • 0 Henk 'm!

  • Gomez12
  • Registratie: Maart 2001
  • Laatst online: 17-10-2023
Draait php op windows of linux??? Want ik kan mij nog herinneren dat er een probleem met is_dir etc. was onder windows

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
draait op debian

Acties:
  • 0 Henk 'm!

  • Dutchmega
  • Registratie: September 2001
  • Niet online
Gebruik je de absolute path naar de dir?

Acties:
  • 0 Henk 'm!

  • Sybr_E-N
  • Registratie: December 2001
  • Laatst online: 12:54
Heb het ff getest, maar als je het complete path invult bij is_dir() doet jouw code het goed op mijn systeem dan (win98 bak).

Ik heb het statement op line 14 in de code-fragment die je gaf in het volgende veranderd. Dit zal op je *nix bak wel ff anders moeten, maar iig probeer het eens met het volledige pad ipv van alleen de naam die in de array staat:
PHP:
1
  if (is_dir($str_dir .'\\'.  $arr_filelist[$i])) {

Acties:
  • 0 Henk 'm!

  • Guru Evi
  • Registratie: Januari 2003
  • Laatst online: 24-08 19:45
. en .. zijn gewone "directory's" die verwijzen naar de eigen directory (.) en de bovenliggende directory (..)

Misschien eens een ls in een terminalvenster doen? zul je zien

. <DIR>
.. <DIR>
BLAAT <DIR>
blaat.mp3 4.683

doe maar eens

cd . (gaat naar dezelfde directory)

en

cd .. (verwijst naar de bovenliggende directory)

Welk bestandssysteem gebruik je?

[ Voor 19% gewijzigd door Guru Evi op 27-04-2004 13:13 ]

Pandora FMS - Open Source Monitoring - pandorafms.org


Acties:
  • 0 Henk 'm!

  • thomaske
  • Registratie: Juni 2000
  • Laatst online: 19-09 09:34

thomaske

» » » » » »

Als argument van is_dir moet je het hele pad meegeven en niet, zoals je nu doet, alleen de huidige filename:

PHP:
1
2
3
...
if(is_dir($str_dir.$arr_filelist[$i])){ 
..

Brusselmans: "Continuïteit bestaat niet, tenzij in zinloze vorm. Iets wat continu is, is obsessief, dus ziekelijk, dus oninteressant, dus zinloos."


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
ahh, tnx het werkt :)

PHP:
1
if(is_dir($str_dir."/".$arr_filelist[$i])){

does the trick
op zich wel logisch.., hoe moet hij anders ook weten welke dir ik bedoel :)
Pagina: 1