IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Problème avec la fonction is_dir()


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Inscrit en
    Mai 2007
    Messages
    28
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 28
    Points : 22
    Points
    22
    Par défaut Problème avec la fonction is_dir()
    Bonjour,

    Je suis en train de tester une fonction qui permet de copier un répertoire ainsi que ses sous-dossiers dans un autre répertoire. Le problème est que je ne réussi pas à passer la première condition de ma fonction. Pourtant pour moi, la destination est correcte quand je fait un echo pour afficher le résultat de $dest_new_dossier et de $dest_old_dossier. Il me dit que le paramètre de is_dir est pas valide pour lui. Donc ça ne passe pas à la suite donc impossible de copier les fichiers dans le répertoire.

    Donc comment faire pour rendre $dest_new_dossier et de $dest_old_dossier valides pour is_dir() car je bute dessus.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
     
    $dest_new_dossier='J:\\test\\'.$_SESSION['unite'].'\\'.$_SESSION['equipement'].' (Numero '.$_POST['valeurid'].')\\';
    $dest_old_dossier='J:\\test\\'.$_SESSION['temp1'].'\\'.$_SESSION['temp2'].' (Numero '.$_POST['valeurid'].')\\'; 
    copy_dir($dest_old_dossier,$dest_new_dossier);
     
    function copy_dir ($dir2copy,$dir_paste) {
     
            // On vérifie si $dir2copy est un dossier
            if (is_dir($dir2copy)) {
                    echo "C EST BIEN UN DOSSIER<BR>";
     
                    // Si oui, on l'ouvre      
                    if ($dh = opendir($dir2copy)) 
                                    {                            
                            echo "DOSSIER OUVERT<BR>";
                                                    // On liste les dossiers et fichiers de $dir2copy
                            while (($file = readdir($dh)) !== false) 
                                                    {
                                    // Si le dossier dans lequel on veut coller n'existe pas, on le créé
                                    if (!is_dir($dir_paste)) mkdir ($dir_paste, 0777,TRUE);
                                                                    {
                                                                            echo "CREATION DOSSIER";
                                                                    }
                                    // S'il s'agit d'un dossier, on relance la fonction récursive
                                    if(is_dir($dir2copy.$file) && $file != '..'  && $file != '.') 
                                                                    {
                                                                            copy_dir ( $dir2copy.$file.'/' , $dir_paste.$file.'/' );     
                                                                            echo "COPIE DOSSIER";
                                                                    }
                                    // S'il sagit d'un fichier, on le copue simplement
                                    elseif($file != '..'  && $file != '.') 
                                                                    {
                                                                    copy ( $dir2copy.$file , $dir_paste.$file );
                                                                    echo "COPIE FICHIER SIMPLE";
                                                                    }
                            }
                    // On ferme $dir2copy
                    closedir($dh);
                    } 
            }         
    }

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    254
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2007
    Messages : 254
    Points : 304
    Points
    304
    Par défaut
    Que donne un echo de $dir2copy et $dir_paste ?

  3. #3
    Membre à l'essai
    Inscrit en
    Mai 2007
    Messages
    28
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 28
    Points : 22
    Points
    22
    Par défaut
    Salut et merci de m'aider car franchement je comprends plus rien.

    Donc ca m'affiche ceci quand mes arguments :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    J:\test\zb12\S22 (Numero 5)\
    J:\test\ZB12\TEST (Numero 5)\
     
    les paramètres des variables sont :
    $_SESSION['unite'] = ZB12
    $_SESSION['equipement'] = TEST
    $_SESSION['temp1'] = zb12
    $_SESSION['temp2'] = S22
     
    Je rappelle les lignes :
     
    $dest_new_dossier='J:\test\\'.$_SESSION['unite'].'\\'.$_SESSION['equipement'].' (Numero '.$_POST['valeurid'].')\\';
    $dest_old_dossier='J:\test\\'.$_SESSION['temp1'].'\\'.$_SESSION['temp2'].' (Numero '.$_POST['valeurid'].')\\';
    Donc pour ca y'a aucun problèmes enfin j'en vois pas. le paramètres que je donne a is_dir() est pour moi valable mais je ne réussi pas a rentrer dans le if.
    Même si je fais, ca ne règle pas mon problème.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $dir2copy=strtr($dir2copy,'\\','/');
    $dir_paste=strtr($dir_paste,'\\','/');
    Merci d'avance.

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    254
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2007
    Messages : 254
    Points : 304
    Points
    304
    Par défaut
    Tu possèdes donc un dossier qui s'appele "S22 (Numero 5)"?
    Peux-tu renommer le dossier en "S22_Numero_5"?
    Mon hypothèse étant que le dossier "S22 (Numero 5)" pourrait être traité comme "S22%20(Numero%205)"

  5. #5
    Membre à l'essai
    Inscrit en
    Mai 2007
    Messages
    28
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 28
    Points : 22
    Points
    22
    Par défaut
    Désolé encore de vous avoir dérangé car j'ai trouvé mon problème tout seul. j'ai utilisé la fonction dirname() et depuis j'ai plua ucun problème.

    Merci encore Ouach d'avoir voulu m'aider.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [MySQL] Problème avec la fonction is_dir
    Par SuperSDF dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 13/06/2009, 22h21
  2. Problème avec la fonction findfirst ()
    Par Angelico dans le forum Windows
    Réponses: 3
    Dernier message: 05/08/2004, 20h40
  3. [Requete SQL en VBA] Problème avec la fonction FLOOR
    Par zubral dans le forum Langage SQL
    Réponses: 4
    Dernier message: 13/07/2004, 13h24
  4. Problème avec les fonctions
    Par jvachez dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 13/01/2004, 12h06
  5. [Postgresql]Problème avec les fonctions ...
    Par fet dans le forum Requêtes
    Réponses: 4
    Dernier message: 02/10/2003, 09h04

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo