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 :

Boucle (quasi) infinie


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Avatar de Anduriel
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Février 2004
    Messages
    2 290
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration

    Informations forums :
    Inscription : Février 2004
    Messages : 2 290
    Par défaut Boucle (quasi) infinie
    Salut,

    J'ai dans une table une liste de fichier, avec leur chemin et leurs dossiers de référence (dans une autre table) comme ça par exemple:

    dir | id 1
    dir2 | id 2
    1.php | dir/1.php | id 1 | leader_id 1
    2.php | dir/dir2/2.php | id 2 | leader_id 2
    3.php | dir/dir2/3.php | id 3 | leader_id 2
    Mais voila je voudrai afficher chaque fichier en arborescence sur ma page (ainsi mettre des espaces necessaires au on endroit...) pour avoir qqchose comme ça:

    + dir/
    *****- 1.php
    *****+ dir2/
    **********- 2.php
    **********- 3.php
    Vous comprenez? Le hic c'est que je me tourne la tete sans savoir comment faire ma boucle...

  2. #2
    Membre chevronné
    Avatar de genova
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    487
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 487
    Par défaut
    Si tu affiches des fichiers récursivements il te suffit d'incrémenter une variable statique au début de ta fonction et de la décrémenter à la fin de celle ci, afin de faire un sorte de variable te donnant le niveau actuel.

    Si tu le fais itérativement il y a une méthode ou tu empiles les ID des dossiers dans un tableau et ou tu les dépile dès que tu remontes ton dossier.
    Testez le forum Fire Soft Board, un forum libre, gratuit et français.

    Système de template de phpBB - Lisez la FAQ PHP avant toute question si vous débuttez en PHP.

  3. #3
    Membre éprouvé
    Avatar de Anduriel
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Février 2004
    Messages
    2 290
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration

    Informations forums :
    Inscription : Février 2004
    Messages : 2 290
    Par défaut
    Si j'incrémente et décrémente ça fera 1-0-1-0-1-0.. non?

    Et que veux tu dire par empliser les ID?
    Merci à toi.

  4. #4
    Expert confirmé Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Par défaut
    Pas besoin de faire les chose bien compliquées, un poil de css suffit
    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
     
    <html>
      <head>
    <style type="text/css">
    .folder, .file {
       font-family:monospace;
    }
    .folder {
       color:blue;
    }
    .elements {
       padding-left:20px;
    }
    .file {
       color:green;
    }
    </style>
      </head>
      <body>
        <div class="folder">+ dir1/</div>
            <div class="elements">
    		<div class="file">- 1.php</div>
    		<div class="folder">+ dir2/</div>
              	<div class="elements">
    			<div class="file">- 2.php</div>
    			<div class="file">- 3.php</div>
    		</div>
    	</div>
        </div>
      </body>
    </html>

  5. #5
    Membre éprouvé
    Avatar de Anduriel
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Février 2004
    Messages
    2 290
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration

    Informations forums :
    Inscription : Février 2004
    Messages : 2 290
    Par défaut
    Euh lol?
    Je souhaite afficher mes informations le style n'est pas un problème

  6. #6
    Membre Expert
    Avatar de ska_root
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2005
    Messages
    1 203
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Service public

    Informations forums :
    Inscription : Août 2005
    Messages : 1 203
    Par défaut
    vu comment tu présentes ton problème, c'est un peu difficile à comprendre Anduriel...

    quoiqu'il en soit, la solution de Mr N. n'est pas si dénué de sens, tu peux filtrer les données "leader*" pour leur attribuer un nom de class css...

    par contre, je trouve qu'il y a un peu trop de div à mon goût...

    bref imaginons :
    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
     
    <html>
    <head><title>essai</title>
    <style>
    .element {margin-left:20px;color: #FF0040;}
    .dir {color : #21B50D;}
    </style>
    </head>
    <body>
    <?php
    $tab_dir  = array("/home/www/monsite/", "test/");
    $tab_file = array(
          array('pos' => 0, 'name' => '1.php'), 
          array('pos' => 1, 'name' => '2.php'),
          array('pos' => 1, 'name' => '3.php'),  
          array('pos' => 0, 'name' => '4.php'),
          array('pos' => 1, 'name' => '5.php')
    );
     
    $pos   = '';
    $dir   = '';
    $signe = '';
     
    foreach ($tab_file As $arFile) {
       foreach ($arFile As $key => $item) {
          if($key == "pos") {
             if($item === 1){
                $pos = "element";
                $dir = $tab_dir[0].$tab_dir[1];
                $signe = "- ";
             }else {
                $pos = "dir";
                $dir = $tab_dir[0];
                $signe = "+ ";
             }
          }else {
             echo "<span class=\"$pos\">$signe<a href=\"{$dir}{$item}\">$item</a></span><br />\n";
          }
       }
    }
     
    ?>
    </body>
    </html>
    ça t'irait ça ?

  7. #7
    Membre éprouvé
    Avatar de Anduriel
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Février 2004
    Messages
    2 290
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration

    Informations forums :
    Inscription : Février 2004
    Messages : 2 290
    Par défaut
    Ouah compliqué de savoir faire des tableaux et des foreach comme ça... C'est bien mais je ne comprends pas: quand il y a des sous dossiers, ce code ne fonctionne pas? Dans ce cas c'est un dossier pusi une liste de fichiers, un dossier une liste de fichiers etc, mais pas un dossier puis un sous-dossier puis une liste de fichiers etc...

    Euh est-ce que j'ai été clair?
    Merci

  8. #8
    Expert confirmé Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Par défaut
    As-tu déjà un code qui tourne ? ou pars-tu de zero ?

  9. #9
    Expert confirmé Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Par défaut
    Je souhaite afficher mes informations le style n'est pas un problème
    Tu voulais pas faire de l'indentation ? => css
    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
    <html>
      <head>
    <style type="text/css">
    .folder, .file {
       font-family:monospace;
    }
    .folder {
       color:blue;
    }
    .elements {
       padding-left:20px;
    }
    .file {
       color:green;
    }
    </style>
      </head>
      <body>
        <?php
    function explore($homedir) {
        $output = '';
        $dir = openDir($homedir);
        while ($file = readDir($dir)) {
            if (($file!=".")&&($file!="..")) {
                if (is_dir("$homedir/$file")) {
                    $output .= '<div class="folder">+ '.$file.'/</div>';
                    $subelements = explore("$homedir/$file");
                    if ($subelements !== '') {
                        $output .= '<div class="elements">'.$subelements.'</div>';
                    }
                } else {
                    $output .= '<div class="file">- '.$file.'/</div>';
                }
            }
        }
        closeDir($dir);
        return $output;
    }
    $html = explore(dirname(__FILE__));
    echo $html;
        ?>
      </body>
    </html>
    Attention à la récursivité, ca bouffe vite de la mémoire... transformer l'algo et iteratif si on travaille sur de grandes profondeur de répertoires...

  10. #10
    Membre éprouvé
    Avatar de Anduriel
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Février 2004
    Messages
    2 290
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration

    Informations forums :
    Inscription : Février 2004
    Messages : 2 290
    Par défaut
    Super ton code!
    Merci

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

Discussions similaires

  1. procédure stockée qui boucle à l'infini
    Par ludo00002 dans le forum Firebird
    Réponses: 4
    Dernier message: 18/05/2009, 11h07
  2. algorithme boucle à l'infinie
    Par vladimire dans le forum Windows Forms
    Réponses: 6
    Dernier message: 22/01/2009, 21h22
  3. Boucle Javascript infinie
    Par Warman dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 18/01/2009, 03h21
  4. Boucle while infinie
    Par god_enel dans le forum C
    Réponses: 1
    Dernier message: 16/04/2007, 12h35
  5. Complexité d'une boucle potentiellement infinie
    Par Hayato dans le forum Algorithmes et structures de données
    Réponses: 13
    Dernier message: 06/09/2005, 12h55

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