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

EDI, CMS, Outils, Scripts et API PHP Discussion :

qui peut m'expliquer ce script?


Sujet :

EDI, CMS, Outils, Scripts et API PHP

  1. #1
    Membre à l'essai
    Inscrit en
    Octobre 2005
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 22
    Points : 13
    Points
    13
    Par défaut qui peut m'expliquer ce script?
    bonjour
    j'ai cherché dans les forums un script qui permet de boucler sur les fichiers d'un dossiers et j'ai trouvé ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <?
    function loop($path, $procedure, $call = "before"){ 
       $rep=opendir($path); 
       while ($file = readdir($rep)){ 
          if($file != '..' && $file !='.' && $file !='' ){ 
             if ($call == "before") $procedure($path."/".$file); 
             if (is_dir($path."/".$file))loop($path."/".$file, $procedure, $call); 
             if ($call == "after") $procedure($path."/".$file); 
             } 
     
          } 
       closedir($rep); 
       }//end loop
       ?>
    alors de ce que j'ai compris $path c'est le chemin mais concernant $procedure et $call?????????????
    où est ce que j dois inserer la fonction que je veux executer????
    j suis débutante alors..........
    je vous remercie....

  2. #2
    Expert éminent 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
    Points : 6 449
    Points
    6 449
    Par défaut
    $procedure = le nom de la procedure que tu veux appeler sur chaque items
    $call = "before" si tu veux traiter les dossiers avant les fils, "after" le contraire

  3. #3
    Membre éclairé Avatar de nako
    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2003
    Messages
    577
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Août 2003
    Messages : 577
    Points : 663
    Points
    663
    Par défaut
    Citation Envoyé par Mr N.
    $procedure = le nom de la procedure que tu veux appeler sur chaque items
    Et l'appel $procedure($parametres) marche ?
    Tiens, je connaissais pas, intéressant.
    a+

  4. #4
    Expert éminent 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
    Points : 6 449
    Points
    6 449
    Par défaut
    Oui ca marche, oui c'est intéressant, mais ca ne contribue pas à la lisibilité du code... preuve avec ce thread...

  5. #5
    Membre à l'essai
    Inscrit en
    Octobre 2005
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 22
    Points : 13
    Points
    13
    Par défaut
    merci pour votre reponse, au fait j'ai ce script là que je veux executer sur chaque fichier :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <? 
    $cible = "fichier.txt"; 
    $fp = fopen($cible, "r"); 
    $lignenum = 0; 
    while(!feof($fp)) { 
       $lignenum++; 
       $ligne = fgets($fp, 4096); 
       if($lignenum >= 39 && $lignenum<=42) echo $ligne . "<br>"; 
    } 
    ?>
    alors ce ke je demande dans $cible qu'est ce que je dois ecrire elors que dans ma fonction je vais parcourir tt les fichiers, et si c'est bien ce code qui est la procedure???????,

    comment integrer ce script dans l'autre? j'ai essayé plusieurs façons mais ça marche toujours pas.....

  6. #6
    Membre éclairé Avatar de nako
    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2003
    Messages
    577
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Août 2003
    Messages : 577
    Points : 663
    Points
    663
    Par défaut
    [
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <?
     
    function procedure($cible) {
    // $cible = "fichier.txt"; ligne à enlever
    $fp = fopen($cible, "r"); 
    $lignenum = 0; 
    while(!feof($fp)) { 
       $lignenum++; 
       $ligne = fgets($fp, 4096); 
       if($lignenum >= 39 && $lignenum<=42) echo $ligne . "<br>"; 
    } 
    }
    ?>
    je pense que ça doit être qq chose comme ça, bien sur, tu peux renommer ta fonction pour lui donner un nom plus explicite, en changeant dans la fonction loop aussi.
    a+

  7. #7
    Membre à l'essai
    Inscrit en
    Octobre 2005
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 22
    Points : 13
    Points
    13
    Par défaut
    merci
    donc là je dois écrire les 2 fonctions et puis j'appelle la fonction loop ds laquelle se trouve l'appel de la fonction "procedure"???????
    c'est ça??????????

  8. #8
    Membre éclairé Avatar de nako
    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2003
    Messages
    577
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Août 2003
    Messages : 577
    Points : 663
    Points
    663
    Par défaut
    Citation Envoyé par nouna
    c'est ça??????????
    Ben oui, il me semble.
    Tu as essayé ?
    Ca fait ce que tu veux ?

  9. #9
    Expert éminent 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
    Points : 6 449
    Points
    6 449
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    function ma_proc(...) {
    ...
    }
     
    function loop($path, $procedure, $call = "before"){ 
    ...
    }
     
    //appel :
    $path = dirname(__FILE__);
    loop($path, "ma_pro");

  10. #10
    Membre à l'essai
    Inscrit en
    Octobre 2005
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 22
    Points : 13
    Points
    13
    Par défaut
    non j'arrive toujours pas au résultat voulu

    je ne comprend toujours pas ce que je dois mettre comme variable de la fonction procedure $cible.......

    voilci le code, qu'est ce que je dois corriger??????

    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
    <? 
     
    function procedure($cible) { 
    $fp = fopen($cible, "r"); 
    $lignenum = 0; 
    while(!feof($fp)) { 
       $lignenum++; 
       $ligne = fgets($fp, 4096); 
       if($lignenum >= 39 && $lignenum<=42) echo $ligne . "<br>"; 
    } 
    } 
    function loop($path, $procedure, $call = "before"){ 
       $rep=opendir($path); 
       while ($file = readdir($rep)){ 
          if($file != '..' && $file !='.' && $file !='' ){ 
             if ($call == "before") $procedure($path."/".$file); 
             if (is_dir($path."/".$file))loop($path."/".$file, $procedure, $call); 
             if ($call == "after") $procedure($path."/".$file); 
             } 
     
          } 
       closedir($rep); 
       }//end loop
    //appel : 
    $path = dirname(C:\\Documents and Settings\\All Users\\Bureau\\mon dossier); 
    loop($path, $procedure);
    ?>

  11. #11
    Membre éclairé Avatar de nako
    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2003
    Messages
    577
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Août 2003
    Messages : 577
    Points : 663
    Points
    663
    Par défaut
    Comme l'a précisé Mr N., l'appel est :

    loop($path, "procedure");

    a+

  12. #12
    Membre à l'essai
    Inscrit en
    Octobre 2005
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 22
    Points : 13
    Points
    13
    Par défaut
    et au lieu de $cible????????

  13. #13
    Expert éminent 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
    Points : 6 449
    Points
    6 449
    Par défaut
    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 traiter_dossiers_et_fichiers($cible) {
       $fp = fopen($cible, "r");
       $lignenum = 0; 
       while(!feof($fp)) {
          $lignenum++;
          $ligne = fgets($fp, 4096);
          if($lignenum >= 39 && $lignenum<=42) echo $ligne . "<br>";
       }
    }
    function loop($path, $procedure, $call = "before"){
       $rep=opendir($path);
       while ($file = readdir($rep)){
          if($file != '..' && $file !='.' && $file !='' ){
             if ($call == "before") $procedure($path."/".$file);
             if (is_dir($path."/".$file))loop($path."/".$file, $procedure, $call);
             if ($call == "after") $procedure($path."/".$file);
          }
     
       }
       closedir($rep);
    }//end loop
     
    //appel :
    $path = "C:\\Documents and Settings\\All Users\\Bureau\\mon dossier";
    loop($path, "traiter_dossiers_et_fichiers");
    ?>
    Attention dans ta procédure il faut traiter les dossiers (:is_dir)

  14. #14
    Membre à l'essai
    Inscrit en
    Octobre 2005
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 22
    Points : 13
    Points
    13
    Par défaut
    ça ne marche toujours pas........ une page blanche........

  15. #15
    Expert éminent 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
    Points : 6 449
    Points
    6 449
    Par défaut
    Peux-tu essayer ce script (sans rien modifier) ?
    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
     
    function traiter_dossiers_et_fichiers($cible) {
       echo "<div>".$cible."</div>";
    }
    function loop($path, $procedure, $call = "before"){
       $rep=opendir($path);
       while ($file = readdir($rep)){
          if($file != '..' && $file !='.' && $file !='' ){
             if ($call == "before") $procedure($path."/".$file);
             if (is_dir($path."/".$file))loop($path."/".$file, $procedure, $call);
             if ($call == "after") $procedure($path."/".$file);
          }
     
       }
       closedir($rep);
    }//end loop
     
    //appel :
    $path = dirname(__FILE__);
    loop($path, "traiter_dossiers_et_fichiers");
    ?>

  16. #16
    Membre à l'essai
    Inscrit en
    Octobre 2005
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 22
    Points : 13
    Points
    13
    Par défaut
    toujours pareil, aucun résultat, je n'ai touché qu'à (___File___) je l'ai changé par le chemin du dossier.
    je ne sais pas mais j'ai l'impression que le probleme vient de la variable $cible, dans l'appel de la procedure on indique pas la variable donc comment ça se passe???

  17. #17
    Expert éminent 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
    Points : 6 449
    Points
    6 449
    Par défaut

    Peux-tu essayer ce script (sans rien modifier) ?
    Tu arrives à lire là ?!

  18. #18
    Membre à l'essai
    Inscrit en
    Octobre 2005
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 22
    Points : 13
    Points
    13
    Par défaut

    daccord je l'ai essayé.
    il m'affiche tt les fichiers presents sous la racine www

  19. #19
    Membre à l'essai
    Inscrit en
    Octobre 2005
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 22
    Points : 13
    Points
    13
    Par défaut
    alors?
    qu'est ce que je dois faire?

  20. #20
    Expert éminent 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
    Points : 6 449
    Points
    6 449
    Par défaut
    donc le script fonctionne, c'est juste l'appel de ton dossier en dur qui foire. Soit tu passes sous linux, soit tu trouves la bonne syntaxe à utiliser sous windows... je peux pas te dire mieux....

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Qui peut m'expliquer ?
    Par Shankara dans le forum VBA Access
    Réponses: 3
    Dernier message: 13/11/2011, 21h38
  2. QUi peut m'expliquer cette commande: myisamchk -r log_visitor_info.MYI
    Par guillaume7684 dans le forum Administration
    Réponses: 2
    Dernier message: 26/12/2010, 11h13
  3. Qui peut m'expliquer
    Par peter27x dans le forum Débuter
    Réponses: 16
    Dernier message: 04/02/2009, 09h09
  4. [UBUNTU] Qui peut m'expliquer ce qu'est un live cd ?
    Par Jihed Amine Maaref dans le forum Ubuntu
    Réponses: 21
    Dernier message: 29/08/2006, 21h04

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