Tableau de fichiers [Résolu]

ninho44 86 Messages postés vendredi 18 janvier 2008Date d'inscription 19 juin 2009 Dernière intervention - 12 juin 2008 à 14:37 - Dernière réponse : ninho44 86 Messages postés vendredi 18 janvier 2008Date d'inscription 19 juin 2009 Dernière intervention
- 12 juin 2008 à 17:49
Bonjour a tous,
Voila alors j'ai un petit souci en PHP et n'étant pas encore très doué je fais appel à vos talents.
Mon problème est que sur une de mes pages de mon site, j'affiche le contenu de tous les fichiers d'un répertoire. Mais ces fichiers s'affcihe par ordre alphabétique et non pas par ordre de date de création comme je le souhaite...Je sais qu'il fat faire un tableau pour trier les fichiers mais le prblème est que je n'y arrive vraiment pas ...
voici ma fonction qui me permet de parcourir le dossier et de connaitre les fichiers contenu:
function ParcourRepertoire($Chemin, $ProfondeurMax -1 , $Mode "TOUT", $P = 0)
{
   if(substr($Chemin, strlen($Chemin) - 1) != '/')
      $Chemin .= '/';
   $ListeRep = array();
   if($Mode != "FICHIERS")
      $ListeRep[] = $Chemin;
   if($handle = opendir($Chemin))
   {       while(false !($Fichier readdir($handle)))
       {
           if($Fichier != '.' && $Fichier != '..')
           {
               $Fichier = $Chemin . $Fichier;
               if(! is_dir($Fichier))
               {
                  if($Mode != "REPERTOIRES")
                     $ListeRep[] = $Fichier;  
               }
               elseif($P >=0 && ($P < $ProfondeurMax || $ProfondeurMax < 0))
               {
                   $result = ParcourRepertoire($Fichier . '/', $ProfondeurMax, $Mode, $P + 1);
                   $ListeRep = array_merge($ListeRep, $result);
               }
           }
       }
       closedir($handle);
   }
   if($P == 0 )
      natcasesort($ListeRep);
   return($ListeRep);
}

Jespere que vous pourrez m'aider... Merci
Afficher la suite 

21 réponses

Répondre au sujet
JoJo738 1267 Messages postés mercredi 7 juillet 2004Date d'inscription 29 juin 2010 Dernière intervention - 12 juin 2008 à 15:00
+3
Utile
Lu,

http://www.phpcs.com/infomsg_AFFICHAGE-FICHIERS-DATE_1151538.aspx ???

Le code que l'on à fait ne convient pas ??

<hr />Si ma reponse te convient, merci de l'accepter ! 
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de JoJo738
JoJo738 1267 Messages postés mercredi 7 juillet 2004Date d'inscription 29 juin 2010 Dernière intervention - 12 juin 2008 à 16:27
+3
Utile
L'ordre ? Tu veux dire c'est du plus vieux au plus recent, ou du plus recent au plus vieux ?
Sinon, tu faits un :
$result = array_reverse($result);
qui va tout retourner ^^
<hr />Si ma reponse te convient, merci de l'accepter ! 
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de JoJo738
JoJo738 1267 Messages postés mercredi 7 juillet 2004Date d'inscription 29 juin 2010 Dernière intervention - 12 juin 2008 à 17:26
+3
Utile
Oh l'idiot que je suis ^^ (L'array est de la forme [fichier] = > [time])

Sinon, c'est plus simple avec le numeros des lignes ;)

$resultat = ExploreDirWithTime ($ dir, true, true, true);
$resultat = array_reverse($resultat);

//$TailleTab = count($resultat);
// plus obligatoire avec un foreach (regarde la doc ;)), seulement sit u veux afficher le nombre de fichier

foreach( $resultat as $editTime
{
    if( !is_dir($resultat[$i]))
    {
        /* Debut du script d'affichage du contenu du fichier */
        $fichier = file($file); // Nom du fichier à afficher
        // Pas la peine de faire "$var", un simple $var suffit
        $total = count($fichier); // Nombre total des lignes du fichier
           
       
        echo '
   
        ----

            # |
            <gras>Fichier : ', $file, ' (', $total, ' lignes ; dernière édition le ', date('d/m/Y H:i:s', $editTime), ')
|
        ';
       
        // Départ de la boucle
        // Ici aussi, tu peux mettre une boucle foreach
        foreach( $fichier as $line => $text )
            echo '
        ----

            ', $line, ',
            ', $text, ',
        ';
            // On affiche ligne par ligne le contenu du fichier
        }
        echo '
   
';
       
        // Fin de la boucle
        /* Fin du script d'affichage du contenu du fichier */
    }
}
Après, je vois aps d'autres erreurs !
<hr />Si ma reponse te convient, merci de l'accepter ! 
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de JoJo738
ninho44 86 Messages postés vendredi 18 janvier 2008Date d'inscription 19 juin 2009 Dernière intervention - 12 juin 2008 à 15:08
0
Utile
Salut..

Ben en fait non,ca ne marche pas!! Ca ma fait une fausse joie!!

je viens de tester ça:
function cmp($a,$b) {
    if ($a[1] == $b[1])
        return 0;
    return ($a[1] < $b[1]) ? -1 : 1;
}

 usort($ListeRep, "cmp");

Ca ma changer l'ordre mais c'est toujours pas le bon ... Saurais-tu m'expliquer le plus simplement possible comment mettre tous les fichiers dans un tableau et les trier en fonction de leur date ensuite ? STP..
Commenter la réponse de ninho44
JoJo738 1267 Messages postés mercredi 7 juillet 2004Date d'inscription 29 juin 2010 Dernière intervention - 12 juin 2008 à 15:47
0
Utile
Re,

as tu essayé avec mon script ? (je l'ai testé, il marche)

Sinon, le principe c'est d'explorer ton dossier.
Tu récupère donc les fichiers. Mais tu dois utiliser la fonction filemtime() pour connaitre leur date d'édition. Donc on crée un Array() avec comme nom le fichier et comme valeur la date de modification (pas l'inverse car plusieurs fichiers peuvent être édités en même temps).
Ensuite, on trie le tableau en fonction de la valeur, c'est à dire avec la fonction asort() (ou autre)

<hr />Si ma reponse te convient, merci de l'accepter ! 
Commenter la réponse de JoJo738
ninho44 86 Messages postés vendredi 18 janvier 2008Date d'inscription 19 juin 2009 Dernière intervention - 12 juin 2008 à 16:03
0
Utile
Oui ton script je l'ai bien testé...mais il y a un probleme. Je t'explique:
J'enregistre toutes mes pages de script de mon site dans un répertoire (ton script scan ce répertoire en fait), et dans ce répertoire, il y a un dossier avec des fichiers que je veux afficher selon leur date de création.
Ton script me scan pas le bon répertoire...
Commenter la réponse de ninho44
JoJo738 1267 Messages postés mercredi 7 juillet 2004Date d'inscription 29 juin 2010 Dernière intervention - 12 juin 2008 à 16:11
0
Utile
Mon script ne scan pas le bon repertoire ? Que veux tu dire ?

Il te suffit de changer le chemin normalement.

(sinon, je verrais tout à l'heure ;))

<hr />Si ma reponse te convient, merci de l'accepter ! 
Commenter la réponse de JoJo738
ninho44 86 Messages postés vendredi 18 janvier 2008Date d'inscription 19 juin 2009 Dernière intervention - 12 juin 2008 à 16:17
0
Utile
Si si c'est bon excuse moi ça scan très bien..fausse manip'

En revanche l'ordre n'est toujours pas le bon :s
Commenter la réponse de ninho44
ninho44 86 Messages postés vendredi 18 janvier 2008Date d'inscription 19 juin 2009 Dernière intervention - 12 juin 2008 à 16:35
0
Utile
Oui voila ca me les met du plus vieux au plus récent..
et le array_reverse ne change rien ...
Commenter la réponse de ninho44
ninho44 86 Messages postés vendredi 18 janvier 2008Date d'inscription 19 juin 2009 Dernière intervention - 12 juin 2008 à 16:37
0
Utile
Rectification...
Encore une mauvaise manip'...Ca marche très bien!!

Désolé..je suis juste en 1ere année de BTS, je suis pas un pro encore lol

Je te remercie de ton temps...A bientot !!
Commenter la réponse de ninho44
JoJo738 1267 Messages postés mercredi 7 juillet 2004Date d'inscription 29 juin 2010 Dernière intervention - 12 juin 2008 à 16:41
0
Utile
^_______^

Peut être peux-tu accepté les bonnes réponses pour aider ceux qui auraient le même problème que toi ?

1er année BTS ? J'ai faillit y aller ^^ (Informatique & gestion)

<hr />Si ma reponse te convient, merci de l'accepter ! 
Commenter la réponse de JoJo738
ninho44 86 Messages postés vendredi 18 janvier 2008Date d'inscription 19 juin 2009 Dernière intervention - 12 juin 2008 à 16:45
0
Utile
Ouais ben c'est ça que je fais.... -_-'

Bon allez je vais aller galérer a les afficher ces fichu fichiers...
Commenter la réponse de ninho44
ninho44 86 Messages postés vendredi 18 janvier 2008Date d'inscription 19 juin 2009 Dernière intervention - 12 juin 2008 à 16:54
0
Utile
Arf..je vais ravoir besoin d'aide... Tout à l'heure quand les fichiers n'étaient pas triés, et avec ma fonction ParcourRépertoire, ce code marchait pour l'affichage mais la avec ton scrpt je crois que ça ne s'adapte pas...

Mon script d'affichage
$resultat = ExploreDirWithTime('$dir, true, true, true);
$resultat = array_reverse($ resultat );

   $TailleTab = count($resultat);
 
   for($i= 0;$i<$TailleTab;$i++)
   {
      if(! is_dir($ resultat [$i]))
      {
            /* Debut du script d'affichage du contenu du fichier */
            $fichier = file("$resultat[$i]"); // Nom du fichier à afficher
            $total = count($fichier); // Nombre total des lignes du fichier
       
                for($j = 0; $j < $total; $j++) 
                    { // Départ de la boucle
                        echo ('                                 ----

                                '.$fichier[$j].',
                               
                               
'); // On affiche ligne par ligne le contenu du fichier
                    } // Fin de la boucle
            /* Fin du script d'affichage du contenu du fichier */
      }
   }/* Fin de la boucle */

Tu peux encore m'aider sur ce coup là ?? lerreur renvoyer concerne tous ce qu'il y a en gras.
Commenter la réponse de ninho44
JoJo738 1267 Messages postés mercredi 7 juillet 2004Date d'inscription 29 juin 2010 Dernière intervention - 12 juin 2008 à 17:07
0
Utile
Voila le script légèrement amélioré ;) Je sais pas si il marche ^___^

Erreur : ExploreDirWithTime('$dir

$resultat = ExploreDirWithTime($dir, true, true, true);
$resultat = array_reverse($resultat);

//$TailleTab = count($resultat);
// plus obligatoire avec un foreach (regarde la doc ;)), seulement sit u veux afficher le nombre de fichier

foreach( $resultat as $file )
{
    if( !is_dir($resultat[$i]))
    {
        /* Debut du script d'affichage du contenu du fichier */
        $fichier = file($file); // Nom du fichier à afficher
        // Pas la peine de faire "$var", un simple $var suffit
        $total = count($fichier); // Nombre total des lignes du fichier
           
       
        echo '
   
        ----

            # |
            Fichier : ', $file, ' (', $total, ' lignes) |
        ';
       
        // Départ de la boucle
        // Ici aussi, tu peux mettre une boucle foreach
        foreach( $fichier as $line => $text )
            echo '
        ----

            ', $line, ',
            ', $text, ',
        ';
            // On affiche ligne par ligne le contenu du fichier
        }
        echo '
   
';
       
        // Fin de la boucle
        /* Fin du script d'affichage du contenu du fichier */
    }
}

<hr />Si ma reponse te convient, merci de l'accepter ! 
Commenter la réponse de JoJo738
ninho44 86 Messages postés vendredi 18 janvier 2008Date d'inscription 19 juin 2009 Dernière intervention - 12 juin 2008 à 17:22
0
Utile
Alors je viens de tester ca...il y a tout plein de jolie erreur...en anglais -_-'
je te les montre:
Notice: Array to string conversion
Warning: file(1213280941): failed to open stream: No such file or directory
Warning: Invalid argument supplied for foreach()
Commenter la réponse de ninho44
ninho44 86 Messages postés vendredi 18 janvier 2008Date d'inscription 19 juin 2009 Dernière intervention - 12 juin 2008 à 17:31
0
Utile
Mais oui quel idiot franchement lol ^^

Bon alors ca marche, ca s'affiche...mais ya toujours cette petite erreur:
Notice: Array to string conversion

Sais-tu ce que c'est??
Commenter la réponse de ninho44
ninho44 86 Messages postés vendredi 18 janvier 2008Date d'inscription 19 juin 2009 Dernière intervention - 12 juin 2008 à 17:35
0
Utile
c'est bon j'a trouvé..un petit truc en rab qui servait plus a rien!!!

Je te remercie enormément pour ton aide si précieuse...
bonne continuation !!
Commenter la réponse de ninho44
JoJo738 1267 Messages postés mercredi 7 juillet 2004Date d'inscription 29 juin 2010 Dernière intervention - 12 juin 2008 à 17:35
0
Utile
Il n(y a pas de numero de ligne ? ou un text plus explicite ?

<hr />Si ma reponse te convient, merci de l'accepter ! 
Commenter la réponse de JoJo738
JoJo738 1267 Messages postés mercredi 7 juillet 2004Date d'inscription 29 juin 2010 Dernière intervention - 12 juin 2008 à 17:39
0
Utile
Voilà, une erreur toute bête de }

$resultat = ExploreDirWithTime('./', true, true, true);
$resultat = array_reverse($resultat);

//$TailleTab = count($resultat);
// plus obligatoire avec un foreach (regarde la doc ;)), seulement sit u veux afficher le nombre de fichier

foreach( $resultat as $file => $editTime )
{
    if( !is_dir($resultat[$i]))
    {
        /* Debut du script d'affichage du contenu du fichier */
        $fichier = file($file); // Nom du fichier à afficher
        // Pas la peine de faire "$var", un simple $var suffit
        $total = count($fichier); // Nombre total des lignes du fichier
           
           
        echo '
            ----

            # |
            Fichier : ', $file, ' (', $total, ' lignes ; dernière édition le ', date('d/m/Y H:i:s', $editTime), ') |
        ';
           
        // Départ de la boucle
        // Ici aussi, tu peux mettre une boucle foreach
        foreach( $fichier as $line => $text )
        {
            echo '
        ----

            ', $line, ',
            ', htmlspecialchars($text), ',
        ';
            // On affiche ligne par ligne le contenu du fichier
        }
        echo '
   
';
           
        // Fin de la boucle
        /* Fin du script d'affichage du contenu du fichier */
    }
}

<hr />Si ma reponse te convient, merci de l'accepter ! 
Commenter la réponse de JoJo738
JoJo738 1267 Messages postés mercredi 7 juillet 2004Date d'inscription 29 juin 2010 Dernière intervention - 12 juin 2008 à 17:40
0
Utile
Euh, fait gaffe, il y avait une erreur dans mon code précedent (celui avant que tu dise que ça marche)

Bon courage ;)

<hr />Si ma reponse te convient, merci de l'accepter ! 
Commenter la réponse de JoJo738

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.

Tableau de fichiers - page 2