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 :

utilisation de mkdir


Sujet :

Langage PHP

  1. #1
    Membre habitué
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    1 015
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 1 015
    Points : 182
    Points
    182
    Par défaut utilisation de mkdir
    Bonjour à tous,

    J'ai un petit problème avec l'utilisation de mkdir. Cela fonctionne trés bien pour créer un dossier qui n'existe pas.

    Mais lorsque je veux crée un dossier qui porte le même nom la fonction ne marche pas.

    Je ne sais pas si je suis trés clair...si quelqu'un pouvait m'aider, merci.

  2. #2
    Membre expert
    Avatar de Dendrite
    Femme Profil pro
    Développeuse informatique
    Inscrit en
    Juin 2008
    Messages
    2 129
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 58
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeuse informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2008
    Messages : 2 129
    Points : 3 628
    Points
    3 628
    Billets dans le blog
    8
    Par défaut
    Non tu n'es pas très clair.
    Que veux-tu faire si le dossier existe ?
    Le supprimer avec tout ce qu'il peut contenir ?
    Alors il faut commencer par cela... avec une fonction de suppression récursive. On trouve ce genre de fonctions dans les commentaires du manuel PHP, page rmdir (pour remove dir)...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    public function delTree($dir) { 
       $files = array_diff(scandir($dir), array('.','..')); 
        foreach ($files as $file) { 
          (is_dir("$dir/$file")) ? delTree("$dir/$file") : unlink("$dir/$file"); 
        } 
        return rmdir($dir); 
      } 
     
    if (is_dir('mon_dossier')) {
        delTree('mon_dossier');
    }
     
    mkdir('mon_dossier');

    Après cela, la place est libre pour ton mkdir...
    Tout cela si tu as les droits de supprimer le dossier bien sûr...

  3. #3
    Membre habitué
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    1 015
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 1 015
    Points : 182
    Points
    182
    Par défaut Probleme avec l'utilisation de mkdir
    Ah non je ne veux pas le supprimer s'il existe car dans un même dossier il y aura plusieurs autres dossiers...

  4. #4
    Membre expert
    Avatar de Dendrite
    Femme Profil pro
    Développeuse informatique
    Inscrit en
    Juin 2008
    Messages
    2 129
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 58
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeuse informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2008
    Messages : 2 129
    Points : 3 628
    Points
    3 628
    Billets dans le blog
    8
    Par défaut
    gné ?
    Donne un exemple concret, parce que là, c'est pas audible.
    Si tu nommes un dossier toto, puis un autre dossier toto au même niveau... il l'écrase, que veux-tu qu'il fasse d'autre ?

  5. #5
    Membre habitué
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    1 015
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 1 015
    Points : 182
    Points
    182
    Par défaut Probleme avec l'utilisation de mkdir
    Oui c'est mieux avec un petit exemple, je fais ça pour des offres d'emplois.

    Le truc c'est qu'il y a plusieurs établissements et dans chaques établissements, il y a une ou plusieurs offre d'emplois.

    Dans les dossiers offres d'emplois il y a les personnes qui postulent.

    Du coup le chemin devrait ressembler à ceci : ./etablissement/offre/nom_prenom

  6. #6
    Membre expert
    Avatar de Dendrite
    Femme Profil pro
    Développeuse informatique
    Inscrit en
    Juin 2008
    Messages
    2 129
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 58
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeuse informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2008
    Messages : 2 129
    Points : 3 628
    Points
    3 628
    Billets dans le blog
    8
    Par défaut
    Pas assez précis ton exemple :


    ça serait du genre

    etab1/offre25/dupont_sophie/fichier1.doc
    etab1/offre25/dupont_sophie/fichier2.doc
    etab1/offre25/martin_eric/fichier1.jpg
    etab1/offre25/martin_eric/fichier2.xls

    C'est ça ?

    Et dans ce cas, que veux tu dire par "quand le répertoire existe déjà ?"

    Il me semble que tu dois vérifier à chaque étape que ton répertoire ou ton fichier existe, et dans l'ordre arborescent...
    Evidemment, j'ai mis des valeurs en dur dans mon exemple, que tu vas remplacer par des variables dynamiques...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    if (! is_dir('/etab1')) {
        mkdir('/etab1');
    }
    if (! is_dir('/etab1/offre25')) {
        mkdir('/etab1/offre25');
    }
    if (! is_dir('/etab1/offre25/dupont_sophie')) {
        mkdir('/etab1/offre25/dupont_sophie');
    }
    if (! file_exists('/etab1/offre25/dupont_sophie/fichier1.doc')) {
        //tu poses ton fichier sur le chemin...
    }

  7. #7
    Membre expert
    Avatar de Dendrite
    Femme Profil pro
    Développeuse informatique
    Inscrit en
    Juin 2008
    Messages
    2 129
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 58
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeuse informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2008
    Messages : 2 129
    Points : 3 628
    Points
    3 628
    Billets dans le blog
    8
    Par défaut
    Sinon, tu ne parles pas de base de données associée ?
    tu n'en disposes pas ?

    Car à ta place, j'essaierais de gérer les choses d'abord dans la base de données, et à l'aide d'une requête, de construire l'arborescence de ton serveur.
    Ca pourrait être intéressant.

  8. #8
    Membre habitué
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    1 015
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 1 015
    Points : 182
    Points
    182
    Par défaut Probleme avec l'utilisation de mkdir
    Oui c'est exactement ceci!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    if (! is_dir('/etab1')) {
        mkdir('/etab1');
    }
    if (! is_dir('/etab1/offre25')) {
        mkdir('/etab1/offre25');
    }
    if (! is_dir('/etab1/offre25/dupont_sophie')) {
        mkdir('/etab1/offre25/dupont_sophie');
    }
    if (! file_exists('/etab1/offre25/dupont_sophie/fichier1.doc')) {
        //tu poses ton fichier sur le chemin...
    }
    Une base de donnée associée avec les clés primaires et secondaires c'est ça?

  9. #9
    Membre expert
    Avatar de Dendrite
    Femme Profil pro
    Développeuse informatique
    Inscrit en
    Juin 2008
    Messages
    2 129
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 58
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeuse informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2008
    Messages : 2 129
    Points : 3 628
    Points
    3 628
    Billets dans le blog
    8
    Par défaut
    3 table construites ainsi

    etab('id','libelle')

    offre('id','titre','libelle','etab_id')

    postulant('id','nom',prenom','offre_id')

    qui te donnerait cette vue

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    create or replace view v_offres as
    select e.id as etab_id,e.libelle as etab_libelle,o.id as offre_id,o.titre as offre_titre,o.libelle as offre_libelle,p.id as postulant_id,p.nom,p.prenom,concat(e.id,"_",o.id,"_",p.id) as chemin
    from etab e
    inner join offre o on o.etab_id=e.id
    inner join postulant p on p.offre_id=o.id

  10. #10
    Membre éclairé Avatar de Geoffrey74
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2007
    Messages
    515
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2007
    Messages : 515
    Points : 760
    Points
    760
    Par défaut
    Hello,

    plutôt que de vérifier l’existence de chaque dossier, vérifie uniquement si le dernier niveau existe.
    Si il ne l'est pas, crée le avec le mode récursif à true, ainsi, si les niveaux précédent n'existent pas, ils seront aussi créés.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    if (! is_dir('/etab1/offre25/dupont_sophie')) {
        mkdir('/etab1/offre25/dupont_sophie', 0755, true);
    }
    if(! file_exists('/etab1/offre25/dupont_sophie/fichier1.doc')) {
        //tu poses ton fichier sur le chemin...
    }

  11. #11
    Membre habitué
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    1 015
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 1 015
    Points : 182
    Points
    182
    Par défaut utilisation de mkdir
    Oui pour les tables c'est bon mais du coup c'est quoi le mieux??

Discussions similaires

  1. Réponses: 3
    Dernier message: 29/05/2007, 20h37
  2. Réponses: 5
    Dernier message: 01/03/2007, 18h08
  3. Probleme avec l'utilisation de $_SESSION
    Par lepiou dans le forum Langage
    Réponses: 3
    Dernier message: 23/01/2007, 21h35
  4. Problème avec l'utilisation de grep
    Par fgalves dans le forum Shell et commandes GNU
    Réponses: 5
    Dernier message: 07/11/2006, 23h49
  5. Problème avec l'utilisation de la commande system awk
    Par vbcasimir dans le forum Linux
    Réponses: 3
    Dernier message: 05/10/2004, 16h18

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