Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
790 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  fonction is_dir() qui bug

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

fonction is_dir() qui bug

n°843135
fabien
Vive la super 5 !
Posté le 06-09-2004 à 11:02:52  profilanswer
 

Salut tout le monde !
 
J'ai l'impression que la fonction is_dir() de php bug.
 
J'ai la fonction suivante pour liste les dossiers d'un dossier:
 

Code :
  1. function tab_list_dir($dossier)
  2. {
  3. $d=opendir($dossier);
  4. echo "$dossier";
  5. while($f=readdir($d))
  6. {
  7.  //if (!is_file($f) && $f != "." && $f != ".." && $f!="index.php" && $f!=".htaccess" )
  8.  if (is_dir($f) )
  9.  {
  10.  echo $dir[]="<a href=\"?".$url."dossier=".$f."\">".$f."</a>";
  11.  }
  12. }
  13.  closedir();
  14.  @sort($dir);
  15. return $dir;
  16. }


 
lorsque $dossier="."; il n'y a pas de problemes, mais lorsque je met une adresse du type $dossier="dossier/dossier2"; ben ca ne m'affiche que "." et ".."
 
est ce que ca vous fait pareil chez vous ?
 
La seul solution que j'ai trouvé a ca, c'est d'utiliser !is_file() au lieu de is_dir(), mais j'aimerai bien savoir si c'est un bug ou non.
 
merci d'avance :hello:
 
 


---------------
Découvre le HFRcoin ✈ - smilies
mood
Publicité
Posté le 06-09-2004 à 11:02:52  profilanswer
 

n°843195
black_lord
Truth speaks from peacefulness
Posté le 06-09-2004 à 11:54:05  profilanswer
 

j'ai eu la même chose, j'ai utilisé la même solution :)


---------------
uptime is for lousy system administrators what Viagra is for impotent people - mes unixeries - github me
n°843197
Profil sup​primé
Posté le 06-09-2004 à 11:55:17  answer
 

j'ai pas eu ce probleme :/

n°843198
neogally
Battle Angel Alita
Posté le 06-09-2004 à 11:56:01  profilanswer
 

jutilise bcp cette fonction et j'ai jamais eu ce pb :/ ton serveur est sous quel OS ?

n°843213
the real m​oins moins
Posté le 06-09-2004 à 12:07:15  profilanswer
 

"./dossier/dossier2" peut etre non?
ou un chemin complet ("/home/fabien/dossier/dossier2" )


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
n°843219
fabien
Vive la super 5 !
Posté le 06-09-2004 à 12:12:02  profilanswer
 

neogally a écrit :

jutilise bcp cette fonction et j'ai jamais eu ce pb :/ ton serveur est sous quel OS ?

ben j'ai testé sous windows et linux et ca fait pareil :/
 


---------------
Découvre le HFRcoin ✈ - smilies
n°843232
fabien
Vive la super 5 !
Posté le 06-09-2004 à 12:18:05  profilanswer
 

the real moins moins a écrit :

"./dossier/dossier2" peut etre non?
ou un chemin complet ("/home/fabien/dossier/dossier2" )

je viens de tester ca fait pareil [:spamafote]
 
apparement ca a l'air d'etre un bug :gratgrat:
 


---------------
Découvre le HFRcoin ✈ - smilies
n°843233
fabien
Vive la super 5 !
Posté le 06-09-2004 à 12:18:32  profilanswer
 

neogally a écrit :

jutilise bcp cette fonction et j'ai jamais eu ce pb :/ ton serveur est sous quel OS ?

t'as quelle version de php et t'es sur quel os ?
 


---------------
Découvre le HFRcoin ✈ - smilies
n°843265
neogally
Battle Angel Alita
Posté le 06-09-2004 à 12:50:49  profilanswer
 

linux et php 4.3.x je c plus quelle version exactement :/

n°843285
Sebastien
Posté le 06-09-2004 à 13:10:28  profilanswer
 

C'est normal que ca fonctionne pas ton truc, tu as pas fait de chdir, tu peux t'en passer, mais alors voila comment faut faire :
 

Code :
  1. function tab_list_dir($dossier)
  2. {
  3.      $url = '';
  4.      $d=opendir($dossier);
  5.      echo "$dossier";
  6.      while(false !== ($f = readdir($d)))
  7.      {
  8.          //if (!is_file($f) && $f != "." && $f != ".." && $f!="index.php" && $f!=".htaccess" )
  9.          if (is_dir($dossier.$f) )
  10.          {
  11.          echo $dir[]="<a href=\"?".$url."dossier=".$f."\">".$f."</a>";
  12.        
  13.          }
  14.        
  15.        
  16.      }
  17.      closedir();
  18.      @sort($dir);
  19.      return $dir;
  20. }
  21. tab_list_dir('./temp/');


 
Deux trois conseils
-Initialise ta variable $url
-Ajoute bien le '/' à la fin de ton dossier.
-Si c'est bien pour de l'affichage oublie pas les retours à la ligne.
 

mood
Publicité
Posté le 06-09-2004 à 13:10:28  profilanswer
 

n°843299
fabien
Vive la super 5 !
Posté le 06-09-2004 à 13:23:22  profilanswer
 

pourquoi tu me dis qu'il faut que je change de dossier ? moi je veux lire qu'un seul dossier pour savoir ce qui contient et extraire les noms des eventuels dossiers qu'il y a dedans.


---------------
Découvre le HFRcoin ✈ - smilies
n°843305
Sebastien
Posté le 06-09-2004 à 13:34:39  profilanswer
 

Car ta fonctionne is_dir n'est pas complementaire de ta fonction readir / opendir (tu lui passe nul par d'handle.
alors imagine que tu as deux opendir / readdir en meme temps elle fait comment pour savoir quel dossier traiter)
Elle traite le repertoire courant donc si tu es dans le repertoir './' et tu lis les repertoires de './tmp/' ca correspondra pas.
 
Un truc ton con, fait un test de ta fonction
.
..
test
tmp
-test
-test2
 
donc tu es la : './'
tu as les repertoires test et tmp  
le repertoir tmp a les dossiers test et test2
 
Utilise ta fonction sur tmp tu vas voir il va te ressortir test. Car il existe à la racine, lieu ou s'execute le script.
Maintenant si tu utilises ma version ou tu lances un chdir($dossier) ca fonctionnera.


Message édité par Sebastien le 06-09-2004 à 13:36:54
n°843333
fabien
Vive la super 5 !
Posté le 06-09-2004 à 14:17:12  profilanswer
 

sebastien> bizarre ton explication, normalement le opendir() devrait faire automatiquement le changement de dossier.  
Sinon, c'est quoi ta version avec le chdir($dossier) ? je le met dans le code ? avant ou aprés le opendir ?


---------------
Découvre le HFRcoin ✈ - smilies
n°843350
Sebastien
Posté le 06-09-2004 à 14:26:02  profilanswer
 

Non mon explication est pas bizarre.
Opendir te place un pointeur sur un repertoire.
chdir change le repertoire courant de php.
 
et oui si tu veux utiliser le chdir tu dois simplement le mettre dans ta fonction avant le test du is_dir mais c pas la meilleur solution, la meilleur reste celle que j'ai ecrite :
is_dir($dossier.$filename)


Message édité par Sebastien le 06-09-2004 à 14:27:09
n°843363
fabien
Vive la super 5 !
Posté le 06-09-2004 à 14:37:47  profilanswer
 

ha oué, en effet, avec le chdir ca marche :gratgrat:
 


---------------
Découvre le HFRcoin ✈ - smilies
n°843499
simogeo
j'ai jamais tué de chats, ...
Posté le 06-09-2004 à 16:39:40  profilanswer
 

Sebastien a écrit :

Non mon explication est pas bizarre.


 
+1


---------------
from here and there -- \o__________________________________ -- la révolution de la terre, en silence

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  fonction is_dir() qui bug

 

Sujets relatifs
input submit, onclick, fonction ???[perl] Extraction de l'heure sur la fonction Localtime
taille d'image pour fonction PHPfonction perso foireuse
Rendre récursive une fonction de listage.fonction "exec"
aide fonction qui appel l'événment OnActivate chaque 3 minutes[c#] Fonction pour la téléphonie
fonction ou macro excelJS: window.onload Comment l'appeler avec 2 fonction /=
Plus de sujets relatifs à : fonction is_dir() qui bug


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR