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 :

Lecture de répertoires avec classement par fichiers/dossiers


Sujet :

Langage PHP

  1. #1
    Membre régulier
    Homme Profil pro
    Inscrit en
    Décembre 2006
    Messages
    161
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 161
    Points : 72
    Points
    72
    Par défaut Lecture de répertoires avec classement par fichiers/dossiers
    bonjour a tous et merci pour la lecture ;-)

    voila ce que je cherche a faire:
    surement deja exposé mais je n'est pas trouver dans les forums,


    j'ai une fonction recursive qui parcours mes repertoires, tout fonctionne mise a part le classement !

    Je m'explique ce que je voudrais que cette fonction fasse c'est de lister les repertoires puis les fichiers or, actuellement elle liste tout dans l'ordre aphabetique sans se soucier de savoir si c'est un repertoire ou un fichier

    voici ce que j'ai fait

    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
     
    <?php
     
    $exclus = array ('.', '..', 'miniature', 'index.html', 'Thumbs.db');
     
    function explore($homedir) 
    	{   
    	global $exclus;
        $dir = openDir($homedir);
        while ($file = readDir($dir)) 
    		{
    		if (!in_array($file, $exclus)) 
    			{
                if (is_dir($homedir.'/'.$file)) 
    				{
    				echo '<blockquote><img src="templates/images/dossier.png" height="32" width="32" /><a href="test.php?home='.$homedir.'/'.$file.'">'.$file.'</a></blockquote>';
    				//explore("$homedir/$file");
    				} 
    			elseif(is_file($homedir.'/'.$file))
    				{
                    $cheminComplet = $homedir.'/'.$file;
    				echo '<blockquote>'.$cheminComplet.'<br/></blockquote>';
    				}
    			}
    		}
        closeDir($dir);
    	}
     
    // Définition du chemin à explorer
    if(isset($_GET['home']))
    	{
    	$home = $_GET['home'];
    	}
    else
    	{
    	$home = 'galerie';
    	}
     
    // L'appel à la fonction
    explore($home);
    ?>
    Merci d'avance

  2. #2
    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
    Voici ma solution, surement pas la plus élégante, mais qui devrait marcher.
    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
     
    <?php
    $cpt1=0;
    $cpt2=0;
     
    $exclus = array ('.', '..', 'miniature', 'index.html', 'Thumbs.db');
     
    function explore($homedir) 
    	{  
            global $cpt1;
            global $cpt2; 
           global $tab_fichier;
           global $tab_dossier;
    	global $exclus;
        $dir = openDir($homedir);
        while ($file = readDir($dir)) 
    		{
    		if (!in_array($file, $exclus)) 
    			{
                if (is_dir($homedir.'/'.$file)) 
    				{
    				$tab_dossier[$cpt1]= '<blockquote><img src="templates/images/dossier.png" height="32" width="32" /><a href="test.php?home='.$homedir.'/'.$file.'">'.$file.'</a></blockquote>';
                                    $cpt1++;
    				} 
    			elseif(is_file($homedir.'/'.$file))
    				{
                    $cheminComplet = $homedir.'/'.$file;
    				$tab_fichier[$cpt2]='<blockquote>'.$cheminComplet.'<br/></blockquote>';
     
                          $cpt2++;
    				}
    			}
    		}
        closeDir($dir);
    	}
     
    // Définition du chemin à explorer
    if(isset($_GET['home']))
    	{
    	$home = $_GET['home'];
    	}
    else
    	{
    	$home = 'galerie';
    	}
     
    // L'appel à la fonction
    explore($home);
    foreach ($tab_dossier as $dossier){
    echo $dossier[chemin];
    }
    foreach ($tab_fichier as $fichier){
    echo $fichier[chemin];
    }
     
    ?>

  3. #3
    Membre régulier
    Homme Profil pro
    Inscrit en
    Décembre 2006
    Messages
    161
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 161
    Points : 72
    Points
    72
    Par défaut erreur
    j'ai une erreur ligne 52

    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
     
    <?php
    $cpt1=0;
    $cpt2=0;
     
    $exclus = array ('.', '..', 'miniature', 'index.html', 'Thumbs.db');
     
    function explore($homedir) 
    	{  
            global $cpt1;
            global $cpt2; 
           global $tab_fichier;
           global $tab_dossier;
    	global $exclus;
        $dir = openDir($homedir);
        while ($file = readDir($dir)) 
    		{
    		if (!in_array($file, $exclus)) 
    			{
                if (is_dir($homedir.'/'.$file)) 
    				{
    				$tab_dossier[$cpt1] = '<blockquote><img src="templates/images/dossier.png" height="32" width="32" /><a href="test.php?home='.$homedir.'/'.$file.'">'.$file.'</a></blockquote>';
                    $cpt1++;
    				} 
    			elseif(is_file($homedir.'/'.$file))
    				{
                    $cheminComplet = $homedir.'/'.$file;
    				$tab_fichier[$cpt2] = '<blockquote>'.$cheminComplet.'<br/></blockquote>';
    				$cpt2++;
    				}
    			}
    		}
        closeDir($dir);
    	}
     
    // Définition du chemin à explorer
    if(isset($_GET['home']))
    	{
    	$home = $_GET['home'];
    	}
    else
    	{
    	$home = 'galerie';
    	}
     
    // L'appel à la fonction
    explore($home);
     
    foreach ($tab_dossier as $dossier)
    	{
    	echo $dossier[chemin];
    	}
     
    foreach ($tab_fichier as $fichier)
    	{
    	echo $fichier[chemin];
    	}
     
    ?>
    qui correspond a

    Warning: Invalid argument supplied for foreach() in C:\wamp\www\mols\test.php on line 52

  4. #4
    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
    oui, j'ai fait mon fainéant, l'erreur signifie que l'on passe au foreach un tableau vide et "foreach" n'aime pas ca.
    Voici le code corrigé:
    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
     
     
    <?php
    $cpt1=0;
    $cpt2=0;
     
    $exclus = array ('.', '..', 'miniature', 'index.html', 'Thumbs.db');
     
    function explore($homedir) 
    	{  
            global $cpt1;
            global $cpt2; 
           global $tab_fichier;
           global $tab_dossier;
    	global $exclus;
        $dir = openDir($homedir);
        while ($file = readDir($dir)) 
    		{
    		if (!in_array($file, $exclus)) 
    			{
                if (is_dir($homedir.'/'.$file)) 
    				{
    				$tab_dossier[$cpt1] = '<blockquote><img src="templates/images/dossier.png" height="32" width="32" /><a href="test.php?home='.$homedir.'/'.$file.'">'.$file.'</a></blockquote>';
                    $cpt1++;
    				} 
    			elseif(is_file($homedir.'/'.$file))
    				{
                    $cheminComplet = $homedir.'/'.$file;
    				$tab_fichier[$cpt2] = '<blockquote>'.$cheminComplet.'<br/></blockquote>';
    				$cpt2++;
    				}
    			}
    		}
        closeDir($dir);
    	}
     
    // Définition du chemin à explorer
    if(isset($_GET['home']))
    	{
    	$home = $_GET['home'];
    	}
    else
    	{
    	$home = 'galerie';
    	}
     
    // L'appel à la fonction
    explore($home);
     if(!empty($tab_dossier)){
    foreach ($tab_dossier as $dossier)
    	{
    	echo $dossier;
    	}
    }
    if(!empty($tab_fichier)){ 
    foreach ($tab_fichier as $fichier)
    	{
    	echo $fichier;
    	}
    }
     
    ?>
    Et sans le [chemin] à la fin dans le foreach (j'ai fait une erreur de copier / coller)

  5. #5
    Membre régulier
    Homme Profil pro
    Inscrit en
    Décembre 2006
    Messages
    161
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 161
    Points : 72
    Points
    72
    Par défaut
    Ok merci ca fonctionne nikel

    Encore merci

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

Discussions similaires

  1. [DATA] Lecture Fichier Excel avec filtres par SAS
    Par Vincetouch dans le forum SAS Base
    Réponses: 2
    Dernier message: 12/11/2014, 18h01
  2. [Batch] Comparer 2 répertoires avec suppression de fichiers
    Par cyborg12 dans le forum Scripts/Batch
    Réponses: 1
    Dernier message: 06/01/2012, 08h11
  3. Classement des fichiers d'un répertoire par date
    Par lunick dans le forum Langage
    Réponses: 1
    Dernier message: 16/06/2008, 15h22
  4. Upload par FTP avec des gros fichiers
    Par __fabrice dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 8
    Dernier message: 07/06/2006, 13h08
  5. [Système] Ouvrir fichier externe avec prog par défaut de l'OS
    Par Pill_S dans le forum API standards et tierces
    Réponses: 9
    Dernier message: 30/05/2004, 12h54

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