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 :

[Tableaux] creer un dossier dans un dossier


Sujet :

Langage PHP

  1. #1
    Membre éprouvé
    Avatar de ozzmax
    Inscrit en
    Novembre 2005
    Messages
    977
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Novembre 2005
    Messages : 977
    Points : 959
    Points
    959
    Par défaut [Tableaux] creer un dossier dans un dossier
    Bonjour, j'avais de la diffculté a exprimer mon titre
    voilà ce que je veux faire

    j'ai un répertoire comme ceci:

    D:/ajusteur/

    j'aimerais creer un dossier mais qui serait dans un dossier pour parvenir a ceci:

    D:/ajusteur/22/22-A/

    est ce qu'il y a moyen de creer, en spécifiant ce nom de répertoire, tous les dossier de facon a creer avec une instruction les sous dossiers nécessaire?

    ainsi D:/ajusteur/22/ et ensuite D:/ajusteur/22/22-A/?


    Je me posais la question s'il était possible de le faire sans avoir a faire 2 fois le mkdir?

    merci

  2. #2
    Expert éminent sénior

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Points : 17 777
    Points
    17 777
    Par défaut
    La fonction mkdir inclue depuis PHP 5.0.0 un paramètre qui la rend récursive. Si votre version est antérieure il est possible de coder ceci avec une fonction récursive (ce même lien fourni cette implémentation dans les commentaires).


    Julp.

  3. #3
    Membre éprouvé
    Avatar de ozzmax
    Inscrit en
    Novembre 2005
    Messages
    977
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Novembre 2005
    Messages : 977
    Points : 959
    Points
    959
    Par défaut
    merci bien
    mais je ne suis pas en php 5

    donc a moi de coder la récurcive si je comprends bien

    si j'ai au maximum 2 ou 3 sous répertoire...la récursive est secondaire est ce que vous croyez?
    je devrais opter pour 2 appel de mkdir?

  4. #4
    Membre expert

    Profil pro
    imposteur
    Inscrit en
    Avril 2003
    Messages
    3 308
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : imposteur

    Informations forums :
    Inscription : Avril 2003
    Messages : 3 308
    Points : 3 377
    Points
    3 377
    Par défaut
    Citation Envoyé par ozzmax
    si j'ai au maximum 2 ou 3 sous répertoire...la récursive est secondaire est ce que vous croyez?
    je devrais opter pour 2 appel de mkdir?
    T'as peur de la récursivité, avoue ! Allez, ya pas de honte !

  5. #5
    Expert éminent sénior

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Points : 17 777
    Points
    17 777
    Par défaut
    Une fonction récursive vous permettra de créer les répertoires dans tous les cas : que vous en ayez 2 aujourd'hui ou 5 demain. Vous n'êtes pas obligés d'utiliser la récursivité : vous pouvez très bien coder cela de manière itérative. Le but d'une fonction étant de fournir une solution plus ou moins générique à un "problème".


    Julp.

  6. #6
    Membre éprouvé
    Avatar de ozzmax
    Inscrit en
    Novembre 2005
    Messages
    977
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Novembre 2005
    Messages : 977
    Points : 959
    Points
    959
    Par défaut
    Citation Envoyé par Eusebius
    T'as peur de la récursivité, avoue ! Allez, ya pas de honte !


    allez quand meme un peu plus de cassage de tet mais bon je me demandais si c'était vraiment nécessaire

    vous m'avez bien fait rire avec cet citation par contre

    merci pour les conseils les amis!

  7. #7
    Membre éprouvé
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Juin 2003
    Messages
    909
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2003
    Messages : 909
    Points : 1 014
    Points
    1 014
    Par défaut autre solution proposée
    Tu peux aussi créer une fonction qui utilise func_get_args:

    http://fr2.php.net/manual/fr/function.func-get-args.php

  8. #8
    Membre éprouvé
    Avatar de ozzmax
    Inscrit en
    Novembre 2005
    Messages
    977
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Novembre 2005
    Messages : 977
    Points : 959
    Points
    959
    Par défaut
    Bon j'ai besoin d'aide sur celle là

    j'ai quelque difficulté avec mon algo

    je vous met du code et explique ce que je veux faire

    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
     
    //Condition pour avoir le chemin de répertoire complet	
    if(is_int($dossierCourant['numDossier'])){
    	//On a un dossier dont la version n'as pas été réouverte..ex: version 1 au lieu de 1-A
    	$repertoireDossier = $res['ajusteurPath'].$dossierCourant['numDossier'].'/';
    }
    else{
    	//le dossier est rouvert...il se peut que l'ajusteur ai été changé également
    	/*
    	 ex..bug qu'on peut rencontrer:
    	 le dossier est 22-A on le change d'ajusteur
    	 lorsqu'on essaie de creer le dossier avec le $repertoireDossier il est inexistant
    	 D:/ajusteur/22/22-A/ ne fonctionnera pas
    	*/
     
    //Pour avoir le numéro seulement ca ca va etre obligatoirement ex: 22-A ou encore 22-B 
    	$tmp = explode('-',$dossierCourant['numDossier']);
    	$repertoireDossier = $res['ajusteurPath'].$tmp[0].'/'.$dossierCourant['numDossier'].'/';
    }
    jusqu'a là c'est correct voici ce qui me cause probleme

    La partie en bleu...
    si le dossier n'a pas été rouvert... je suis un peu melé
    et s'il l'a été....

    j'utilise la variable $repertoireDossier qui peut prendre les valeur en exemple suivants

    D:/GDRBD/ajusteur/22/
    ou
    D:/GDRBD/ajusteur/22/22-A/

    donc si je fais explode pour le mkdire...je peux avoir comme indice de 0 à 3 ou encire de 0 à 4 qui vient faussé ma condition en bleu

    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
    
    if(!is_dir($repertoireDossier)){
    //l'ajusteur lié au dossier a été modifié
    	$tmp = explode('/',$repertoireDossier);
    
    	if(mkdir($tmp[0].$tmp[1].$tmp[2].$tmp[3],700) && mkdir($repertoireDossier, 0700)){				
    		//Ajouter le dossier à l'ajusteur->tbldossierajusteur
    		$strScript = "INSERT INTO `tbldossierajusteur` ( `dossierAjusteurID` , `ajusteurID` , `dossierID` ) "; 
    		$strScript .= "VALUES ('', '".$dossierCourant['ajusteurID']."', '".$dossierCourant['dossierID']."');";
    		
    		$objCon->dbQuery($strScript);
    						//Test d'affichage
    						//echo $strScript."------------------<br>";
    		/*Si ca se rend ici sans problemes
    		on redirige vers une page de confirmation qui créer le pdf a imprimer*/
    		header("location:../Page/printNewDossier.php?type=3&rec=".$_POST['reception']);
    	}
    	else{
    		//envoie vers la page d'accueil
    		header("location:../Page/login.php?erreur=3");
    	}
    }
    else{
    	$strScript = "UPDATE `tbldossierajusteur` SET ajusteurID = '".$dossierCourant['ajusteurID']."' WHERE dossierID = '".$dossierCourant['dossierID']."'";
    	$objCon->dbQuery($strScript);
    }

    Le je sais pas si je suis clair dans ce que je dis
    mais mon probleme est-il contournable...?

    merci de vos suggestions

  9. #9
    Membre éprouvé
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Juin 2003
    Messages
    909
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2003
    Messages : 909
    Points : 1 014
    Points
    1 014
    Par défaut si j'ai bien compris
    Comme le dit le titre, si j'ai bien compris ton objectif est de concaténer selon $tmp qui peut avoir 4 ou 5 éléments et la variation de ses deux possibilités empêche à ta condition if de fonctionner à tout coup???

    Donc si c'est cela tu récupère la taille de ton tableau dans une variable, $sizetmp par exemple, et au lieu de faire un if -else, tu fais un switch case avec:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    switch($sizetmp){
        case 1: ...
            break;
        // etc.
        default: exit("trop grande taille");
    }

  10. #10
    Membre éprouvé
    Avatar de ozzmax
    Inscrit en
    Novembre 2005
    Messages
    977
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Novembre 2005
    Messages : 977
    Points : 959
    Points
    959
    Par défaut
    bon c'est correct j'ai contourné le problème
    merci pour l'aide!

  11. #11
    Membre éprouvé
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Juin 2003
    Messages
    909
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2003
    Messages : 909
    Points : 1 014
    Points
    1 014
    Par défaut tag résolu
    Si c'est bon, pense à mettre le tag résolu

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

Discussions similaires

  1. [XL-2000] Compter le nombre de sous dossier dans un dossier
    Par neno69 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 03/01/2019, 18h53
  2. Ordre des fichiers et dossiers dans un dossier
    Par piotrr dans le forum Windows
    Réponses: 1
    Dernier message: 19/08/2009, 01h18
  3. Réponses: 6
    Dernier message: 21/06/2007, 15h59
  4. Réponses: 1
    Dernier message: 17/01/2007, 16h46
  5. [OmniMark 5] Copier contenu d'un dossier dans autre dossier
    Par Hoegaarden dans le forum Autres langages
    Réponses: 3
    Dernier message: 24/08/2005, 16h59

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