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 :

demande conseil récusivité


Sujet :

Langage PHP

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    264
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 264
    Points : 141
    Points
    141
    Par défaut demande conseil récusivité
    Bonjour,

    La fonction ci-dessous permet de lister l'ensemble des derniers fichiers...
    Le problème rencontré c'est qu'une fois passé le premier fichier,
    la fonction s'arrete et ne poursuit pas le reste de l'arborescence.

    Je ne sais pas s'il ne serait pas necessaire d'utiliser une récursivité...

    En vous remerciant

    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
    $root = $_SERVER['SCRIPT_FILENAME'];
    $root = substr_count($root, "/") - 4;
    $root = str_repeat("../", $root);
     
      function GetMTime($dir)
     {
       $ndays="15";
       $folder = opendir($dir);
       while ($file = readdir($folder)) {
         if ($file!="." and $file!="..") {
           # Retourne le chemin et le nom du fichier
           $path = $dir. '/' .$file;
           # Retourne la date de la dernière modification
           $file_date = date ("d/m/Y", filemtime($path)); //  H:i:s
           # Convertie la date en seconde
           $day = substr($file_date, 0, 2);
           $month = substr($file_date, 3, 2);
           $year = substr($file_date, 6, 10);
           $file_mktime = mktime(0,0,0,$month,$day,$year,0);
           $file_new = mktime(0,0,0,date("m"),date("d")-$ndays,date("Y"),0);
           if ($file_mktime>$file_new) {
             return '<font color="#d11212">'.$file_date.' '. $path .'<br>';
           }
         }
       }
     
       closedir($folder);
     
     }
     
     echo GetMTime($root);

  2. #2
    Membre confirmé Avatar de stunti
    Inscrit en
    Mai 2006
    Messages
    520
    Détails du profil
    Informations personnelles :
    Âge : 45

    Informations forums :
    Inscription : Mai 2006
    Messages : 520
    Points : 594
    Points
    594
    Par défaut
    cette condition est peut etre valide du coup tu sors de ta fonction (sans fermer le repertoire de pllus)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if ($file_mktime>$file_new)
    If it's not broken, don't fix it.
    BiliBa Built on top of Zend Framework

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    264
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 264
    Points : 141
    Points
    141
    Par défaut
    Il y avait effecivement une erreur de concaténation,
    mais ça ne change toujours rien au problème.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
           if ($file_mktime>$file_new) {
             $file_news.='<font color="#d11212">'.$file_date.' '. $path .'<br>';
           }
         }
       }
       closedir($folder);
       return $file_news;
     }

  4. #4
    Membre confirmé Avatar de stunti
    Inscrit en
    Mai 2006
    Messages
    520
    Détails du profil
    Informations personnelles :
    Âge : 45

    Informations forums :
    Inscription : Mai 2006
    Messages : 520
    Points : 594
    Points
    594
    Par défaut
    tu peut essayer de decrire vite fait l'arborescence que tu essaye de lire ?
    le nom de qques fichier et de qques repertoire.
    If it's not broken, don't fix it.
    BiliBa Built on top of Zend Framework

  5. #5
    Membre averti Avatar de sohnic
    Femme Profil pro
    bioinfo
    Inscrit en
    Mai 2003
    Messages
    426
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : bioinfo

    Informations forums :
    Inscription : Mai 2003
    Messages : 426
    Points : 434
    Points
    434
    Par défaut
    Bonjour,
    D'apres la doc PHP, tu utilises la mauvaise facon de parcourir un repertoire.
    Je te colle l'exemple qui illustre la bonne et la mauvaise methode.
    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
     
     
    <?php
    // Notez que !== n'existait pas avant 4.0.0-RC2
     
    if ($handle = opendir('/chemin/vers/fichiers')) {
       echo "Directory handle: $handle\n";
       echo "Files:\n";
     
       /* Ceci est la façon correcte de traverser un dossier. */
       while (false !== ($file = readdir($handle))) {
           echo "$file\n";
       }
     
       /* Ceci est la MAUVAISE façon de traverser un dossier. */
       while ($file = readdir($handle)) {
           echo "$file\n";
       }
     
       closedir($handle);
    }
    ?>
    Je ne sais pas si ca va resoudre ton probleme, mais qui sait...

    Sohnic
    http://www.noctinfo.fr/

    (\ _ /)
    (='.'=) Voici Lapinou. Aidez-le à conquérir le monde en le reproduisant.
    (")-(")

  6. #6
    Membre chevronné
    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 : 54
    Localisation : France

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

    Informations forums :
    Inscription : Août 2005
    Messages : 1 203
    Points : 1 839
    Points
    1 839
    Par défaut
    on peut connaître la version de PHP utilisée ?

    merci

  7. #7
    Membre expérimenté

    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    1 138
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2002
    Messages : 1 138
    Points : 1 504
    Points
    1 504
    Par défaut
    Personnellement, j'utiliserai une récursivité mais ca dépend aussi de l'importance de l'arborescence à traverser. En effet, il faut savoir qu'une récursivité consomme plus de ressources système.

  8. #8
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    264
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 264
    Points : 141
    Points
    141
    Par défaut
    Merci pour la correction de synthaxe
    Citation Envoyé par sohnic
    Bonjour,
    D'apres la doc PHP, tu utilises la mauvaise facon de parcourir un repertoire.
    Je te colle l'exemple qui illustre la bonne et la mauvaise methode.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
     
    <?php
    if ($handle = opendir('/chemin/vers/fichiers')) {
       /* Ceci est la façon correcte de traverser un dossier. */
       while (false !== ($file = readdir($handle))) {
           echo "$file\n";
       }
    Je ne sais pas si ca va resoudre ton probleme, mais qui sait...

    Sohnic

  9. #9
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    264
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 264
    Points : 141
    Points
    141
    Par défaut
    PHP Version 4.4.2

    Citation Envoyé par ska_root
    on peut connaître la version de PHP utilisée ?

    merci

  10. #10
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    264
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 264
    Points : 141
    Points
    141
    Par défaut
    Ben c'est dans le code ci-dessous qui appele la fonction...

    $root = (racine du site) -> www/...

    Citation Envoyé par stunti
    tu peut essayer de decrire vite fait l'arborescence que tu essaye de lire ?
    le nom de qques fichier et de qques repertoire.

  11. #11
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    264
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 264
    Points : 141
    Points
    141
    Par défaut
    Merci

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

Discussions similaires

  1. demande conseil...
    Par r-valkien dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 08/03/2006, 15h56
  2. Projet WEB : demande conseil et avis !
    Par xG-Hannibal dans le forum Général Conception Web
    Réponses: 2
    Dernier message: 04/03/2006, 21h03
  3. [UML] Débutant demande conseil
    Par materiel67 dans le forum Débuter
    Réponses: 3
    Dernier message: 28/12/2005, 19h56
  4. [VB6] Demande conseil
    Par eagleleader dans le forum VB 6 et antérieur
    Réponses: 6
    Dernier message: 22/11/2005, 17h43

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