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 :

Récursivité dans une arborescence de dossiers...


Sujet :

Langage PHP

  1. #1
    Futur Membre du Club
    Inscrit en
    Avril 2002
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Avril 2002
    Messages : 12
    Points : 8
    Points
    8
    Par défaut Récursivité dans une arborescence de dossiers...
    Bonjour,

    voilà mon problème :

    j'ai créé une arborescence de dossiers et fichiers et je dois vérifier si la personne qui est connectée au site est propriétaire du dossier principal et de son contenu (cad les sous-dossiers et documents) (j'ai une fonction qui verifie qu'un personne est bien proprietaire ou non...), mais en fait voilà mon code :

    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
     
    function Verif_InterieurDossier($pers_id,$dos_id)
    {
    	global $conn;
     
    	if (EstProprietaireDossier($pers_id,$dos_id) == "TRUE")
    	{
    		$req = "SELECT DOS_ID FROM DOSSIER WHERE DOS_SUP_ID=".$dos_id;		// liste des sous-dossiers
    		$rs = $conn->Execute($req);
     
    		while (!$rs->EOF)
    		{
    			$id_dos = $rs->fields['DOS_ID'];
     
    			Verif_InterieurDossier($pers_id,$id_dos);		// traitement récursif pour vérifier les sous-dossiers 
     
                            $rs->MoveNext();
    		}
    		$tmp = "TRUE";
    	}
    	else
    	{
    		$tmp = "FALSE";
    	}	
     
    	return $tmp;
     
    }
    j'appelle donc une fonction qui verifie d'abord le dossier principal, j'ai une requete qui recupere les dossiers dans ce dossier principal et pr chacun je veux rappeler la fonction recursivement pr pouvoir verifier son contenu... et au final le but est de savoir si tous les sous-dossiers contenus ds le dossier de depart appartiennent à la personne connectée, auquel cas cette personne pourra supprimer le dossier principal, ainsi que ses sous-dossiers...

    le pb est que je veux savoir si le dossier principal a des sous-dossiers qui n'appartiennent pas à la personne connectée, auquel cas ça me renverrait FALSE pr le dossier principal...
    Qqun aurait il une idee ?? je ne sais pas si c'est tres clair donc n'hesitez pas à me poser des questions !!

    merci bcp
    Anthony

  2. #2
    Membre averti
    Avatar de Strab
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    338
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 338
    Points : 330
    Points
    330
    Par défaut
    Ta fonction m'a l'air correcte, mais dans l'appel récursif tu n'utilises pas la valeur de retour. La boucle est donc parcourue entièrement quel que soient les droits des dossiers, et tu ne connais donc pas le résultat final.

    Il faudrait plutôt quelque chose du genre :
    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
     
    function Verif_InterieurDossier($pers_id,$dos_id)
    {
       global $conn;
     
       if (EstProprietaireDossier($pers_id,$dos_id) == "TRUE")
       {
          $req = "SELECT DOS_ID FROM DOSSIER WHERE DOS_SUP_ID=".$dos_id;      // liste des sous-dossiers
          $rs = $conn->Execute($req);
          $tmp = "TRUE";
          while (!$rs->EOF && $tmp=="TRUE")
          {
             $id_dos = $rs->fields['DOS_ID']; 
             $tmp = Verif_InterieurDossier($pers_id,$id_dos);      // traitement récursif pour vérifier les sous-dossiers
              $rs->MoveNext();
          }
       }
       else
       {
          $tmp = "FALSE";
       }   
     
       return $tmp;
     
    }

  3. #3
    Futur Membre du Club
    Inscrit en
    Avril 2002
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Avril 2002
    Messages : 12
    Points : 8
    Points
    8
    Par défaut
    en effet ça fonctionne avec ta fonction !! que dire d'autres à part MERCI !! ;-)

  4. #4
    Membre averti
    Avatar de Strab
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    338
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 338
    Points : 330
    Points
    330
    Par défaut
    pense au bouton

  5. #5
    Futur Membre du Club
    Inscrit en
    Avril 2002
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Avril 2002
    Messages : 12
    Points : 8
    Points
    8
    Par défaut
    en fait ce n'est pas encore resolu car j'ai oublié d'integrer la verification des fichiers à l'interieur des dossiers, pour savoir si je suis le proprietaire ou non du fichier...
    mais je ne vois pas ou inserer ça ds mon code... tjs recursivement !!

    as tu une idee ??

  6. #6
    Futur Membre du Club
    Inscrit en
    Avril 2002
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Avril 2002
    Messages : 12
    Points : 8
    Points
    8
    Par défaut
    vu que j'ai trouvé la solution, je la met ;-)

    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
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
     
    function Verif_InterieurDossier($pers_id,$dos_id)
    {
       global $conn;
     
       if (EstProprietaireDossier($pers_id,$dos_id) == "TRUE")
       {
    	  $tmp = Verif_Document($pers_id,$dos_id);
     
    	  if ($tmp == "TRUE")
    	  {
    		  $req = "SELECT DOS_ID FROM DOSSIER WHERE DOS_SUP_ID=".$dos_id;      // liste des sous-dossiers
    		  $rs = $conn->Execute($req);
     
    		  $tmp = "TRUE";
     
    		  while (!$rs->EOF && $tmp=="TRUE")
    		  {
    			 $id_dos = $rs->fields['DOS_ID'];
     
    			 $tmp = Verif_Document($pers_id,$id_dos);
     
    			 if ($tmp == "TRUE")
    			 {
    				$tmp = Verif_InterieurDossier($pers_id,$id_dos);      // traitement récursif pour vérifier les sous-dossiers
    			 }
     
    			 $rs->MoveNext();
    		  }
           } 
       }
       else
       {
          $tmp = "FALSE";
       }   
     
       return $tmp;
     
    } 
     
     
     
    function Verif_Document($pers_id,$dos_id)
    {
      global $conn;
     
      $req = "SELECT FIC_ID FROM COMPO_FICH_DOS WHERE DOS_ID=".$dos_id;      // liste des documents
      $rs = $conn->Execute($req);
     
      $tmp = "TRUE";
     
      while (!$rs->EOF && $tmp=="TRUE")
      {
    	 $id_fic = $rs->fields['FIC_ID'];
     
    	 if (EstProprietaireFichier($pers_id,$id_fic) == "TRUE")
    	 { 
    		$tmp = "TRUE"; 
    	 }
    	 else
    	 { 
    		$tmp = "FALSE"; 
    	 }
     
    	 $rs->MoveNext();
      }
     
      return $tmp;
     
    }

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

Discussions similaires

  1. Problème lecture fichier dans une arborescence de dossiers
    Par africanwinners dans le forum Langage
    Réponses: 5
    Dernier message: 05/12/2014, 12h59
  2. Rechercher dans une arborescence les dossiers "finaux"
    Par ALaurent22 dans le forum Shell et commandes GNU
    Réponses: 3
    Dernier message: 14/03/2012, 18h41
  3. Réponses: 26
    Dernier message: 26/03/2010, 15h24
  4. suppresion de dossiers vide dans une arborescence
    Par vyper55 dans le forum Windows
    Réponses: 1
    Dernier message: 19/02/2007, 14h37
  5. Repérer un dossier dans une arborescence
    Par Feustine dans le forum Langage
    Réponses: 2
    Dernier message: 11/08/2005, 13h54

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