Tableau de fichiers

Résolu
ninho44 Messages postés 86 Date d'inscription vendredi 18 janvier 2008 Statut Membre Dernière intervention 19 juin 2009 - 12 juin 2008 à 14:37
ninho44 Messages postés 86 Date d'inscription vendredi 18 janvier 2008 Statut Membre Dernière intervention 19 juin 2009 - 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

21 réponses

JoJo738 Messages postés 1267 Date d'inscription mercredi 7 juillet 2004 Statut Membre Dernière intervention 29 juin 2010 2
12 juin 2008 à 15:00
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 ! 
3
JoJo738 Messages postés 1267 Date d'inscription mercredi 7 juillet 2004 Statut Membre Dernière intervention 29 juin 2010 2
12 juin 2008 à 16:27
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 ! 
3
JoJo738 Messages postés 1267 Date d'inscription mercredi 7 juillet 2004 Statut Membre Dernière intervention 29 juin 2010 2
12 juin 2008 à 17:26
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 ! 
3
ninho44 Messages postés 86 Date d'inscription vendredi 18 janvier 2008 Statut Membre Dernière intervention 19 juin 2009
12 juin 2008 à 15:08
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..
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
JoJo738 Messages postés 1267 Date d'inscription mercredi 7 juillet 2004 Statut Membre Dernière intervention 29 juin 2010 2
12 juin 2008 à 15:47
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 ! 
0
ninho44 Messages postés 86 Date d'inscription vendredi 18 janvier 2008 Statut Membre Dernière intervention 19 juin 2009
12 juin 2008 à 16:03
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...
0
JoJo738 Messages postés 1267 Date d'inscription mercredi 7 juillet 2004 Statut Membre Dernière intervention 29 juin 2010 2
12 juin 2008 à 16:11
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 ! 
0
ninho44 Messages postés 86 Date d'inscription vendredi 18 janvier 2008 Statut Membre Dernière intervention 19 juin 2009
12 juin 2008 à 16:17
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
0
ninho44 Messages postés 86 Date d'inscription vendredi 18 janvier 2008 Statut Membre Dernière intervention 19 juin 2009
12 juin 2008 à 16:35
Oui voila ca me les met du plus vieux au plus récent..
et le array_reverse ne change rien ...
0
ninho44 Messages postés 86 Date d'inscription vendredi 18 janvier 2008 Statut Membre Dernière intervention 19 juin 2009
12 juin 2008 à 16:37
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 !!
0
JoJo738 Messages postés 1267 Date d'inscription mercredi 7 juillet 2004 Statut Membre Dernière intervention 29 juin 2010 2
12 juin 2008 à 16:41
^_______^

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 ! 
0
ninho44 Messages postés 86 Date d'inscription vendredi 18 janvier 2008 Statut Membre Dernière intervention 19 juin 2009
12 juin 2008 à 16:45
Ouais ben c'est ça que je fais.... -_-'

Bon allez je vais aller galérer a les afficher ces fichu fichiers...
0
ninho44 Messages postés 86 Date d'inscription vendredi 18 janvier 2008 Statut Membre Dernière intervention 19 juin 2009
12 juin 2008 à 16:54
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.
0
JoJo738 Messages postés 1267 Date d'inscription mercredi 7 juillet 2004 Statut Membre Dernière intervention 29 juin 2010 2
12 juin 2008 à 17:07
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 ! 
0
ninho44 Messages postés 86 Date d'inscription vendredi 18 janvier 2008 Statut Membre Dernière intervention 19 juin 2009
12 juin 2008 à 17:22
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()
0
ninho44 Messages postés 86 Date d'inscription vendredi 18 janvier 2008 Statut Membre Dernière intervention 19 juin 2009
12 juin 2008 à 17:31
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??
0
ninho44 Messages postés 86 Date d'inscription vendredi 18 janvier 2008 Statut Membre Dernière intervention 19 juin 2009
12 juin 2008 à 17:35
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 !!
0
JoJo738 Messages postés 1267 Date d'inscription mercredi 7 juillet 2004 Statut Membre Dernière intervention 29 juin 2010 2
12 juin 2008 à 17:35
Il n(y a pas de numero de ligne ? ou un text plus explicite ?

<hr />Si ma reponse te convient, merci de l'accepter ! 
0
JoJo738 Messages postés 1267 Date d'inscription mercredi 7 juillet 2004 Statut Membre Dernière intervention 29 juin 2010 2
12 juin 2008 à 17:39
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 ! 
0
JoJo738 Messages postés 1267 Date d'inscription mercredi 7 juillet 2004 Statut Membre Dernière intervention 29 juin 2010 2
12 juin 2008 à 17:40
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 ! 
0
Rejoignez-nous