begin process at 2012 05 28 10:47:11
  Trouver un code source :
 
dans
 
Accueil > Forum > 

PHP

 > 

Divers

 > 

Débutant(e)

 > 

Affichage des fichiers par date


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Affichage des fichiers par date

mercredi 11 juin 2008 à 12:16:09 | Affichage des fichiers par date

ninho44

Bonjour tout le monde,
Je suis débutant en PHP, et je suis en train de créer un site. Mon problême: Je fais un systeme de news qui affiche sur ma page le contenu des fichiers stockés dans un dossier. Tout s'affiche correctement sauf que les fichiers s'affiche par ordre alphabétique, et moi je voudrais qu'il s'affiche en fonction de leur date de création, c'est a dire du plus récent au plus ancien...

voici mon bout de code:

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);
}

/* DEBUT DU SCRIPT */

   $ListeResult = ParcourRepertoire('\dossier.');
   $TailleTab = count($ListeResult);
  
   for($i=0;$i<$TailleTab;$i++)
   {
      if(! is_dir($ListeResult[$i]))
      {
 
            /* Debut du script d'affichage du contenu du fichier */
            $fichier = file("$ListeResult[$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 (' <table align="center">
                                <tr>
                                <td> '.$fichier[$j].' </td>
                                </tr>
                                </table>'); // On affiche ligne par ligne le contenu du fichier
                    } // Fin de la boucle
                echo ('<div align="center">----------------------------------------------------------------------------</div>');
            /* Fin du script d'affichage du contenu du fichier*/
      }
   }/* Fin de la boucle */




J'espere que j'ai été assez clair, et que mon code n'est pas trop brouillon.

Merci d'avance pour votre aide !!!
mercredi 11 juin 2008 à 13:24:38 | Re : Affichage des fichiers par date

MasterCent

Salut,

Peut-être une idée serait de créer un tableau dans lequel tu mets les noms de fichier et leur date,

Puis, tu demandes que ton tableau soit trié par date. ( attention au format de tes dates )
une fonction sort() ou array_multisort() devrait faire l'affaire.
http://fr.php.net/manual/fr/function.array-multisort.php

Enfin, tu parcours ton tableau pour reccupérer le noms de tes fichiers, que tu pourras alors traiter.


m100

NB :
Attention, il existe peut-être des solutions plus éfficaces au niveau du parcours d'un dossier ?
mercredi 11 juin 2008 à 13:37:20 | Re : Affichage des fichiers par date

tex73

SALUT. je pense une solution à ton probleme consiste à creer une table mysql pour stocker les noms des differents fichiers et leur date de creation. puis pour l'affichage de faire une requete sur la table qui les affiche du plus recent au plus ancien.

http://www.bbsecurit.com
Tout mal qui ne nous tue pas nous rend plus fort.NIETSCHES
mercredi 11 juin 2008 à 14:11:56 | Re : Affichage des fichiers par date

ninho44

Euh non je ne peux pas le transfomer de façon a le mettre ds la base de données...mon supérieur ne veut pas :s  En revanche jai essayer avec sort() mais ca marche pas...peut etre je m'y prend mal...Ce serait possible de voir se que ca donnerait avec mon code ?

mercredi 11 juin 2008 à 14:38:34 | Re : Affichage des fichiers par date

MasterCent

Sur base de ton code ( l'interieur de la fonction ParcoursRepertoire , sans la récursivité),
je construit le tableau $result. sur base   $result[nom] => date ;
Ensuite, la fonction asort( $result ) à pour effet de trier le tableau sur base des valeurs.

Voilà.



<?PHP

    // lecture du nom des fichiers du dossiers
    $Chemin = "." ;
    $result =  Array() ;
    
    if($handle = opendir($Chemin))
    {
       while(false !== ($Fichier = readdir($handle)))
       {
           if($Fichier != '.' && $Fichier != '..')
           {
               /// $Fichier = $Chemin . $Fichier;
               if(! is_dir($Fichier))
               {
                  if($Mode != "REPERTOIRES")
                    /// $ListeRep[] = $Fichier;

                    // construction du tableau
                    $result [ $Fichier ] = filemtime ( $Fichier ) ;

                    
               }
               elseif($P >=0 && ($P < $ProfondeurMax || $ProfondeurMax < 0))
               {
                   /// $result = ParcourRepertoire($Fichier . '/', $ProfondeurMax, $Mode, $P + 1);
                   /// $ListeRep = array_merge($ListeRep, $result);
               }
           }
       }
       closedir($handle);
    }


    print_r ( $result ) ;
   
    // tri par valeurs
    asort ( $result ) ;


    print_r ( $result ) ;

?>
mercredi 11 juin 2008 à 15:04:32 | Re : Affichage des fichiers par date

ninho44

Ok merci de ton coup de main...c'est un peu ce que j'avais fais!!
Mais la il me renvoi ce message d'erreur:
Warning: asort() expects parameter 1 to be array, null given

il n'aime pas asort je crois lol. Et il me dit aussi que filemtime n'est pas définit...je comprend plus rien !!!

C'est cool le PHP...mais seulement quand ça fonctionne !!!
mercredi 11 juin 2008 à 15:26:28 | Re : Affichage des fichiers par date

MasterCent

Pas de quoi pour le coup de main,

asort () :
- as tu testé l'argument donné à asort par un print_r ( ) ?  Afin d'être certain qu'il s'agit d'un tableau ?

filemtime () :
- as tu affiché la valeur de $Fichier (chemin compris ) // perso, j'ai eu un souci à ce niveau là, lors de l'utilisation de 
filemtime ()

...

mercredi 11 juin 2008 à 15:33:40 | Re : Affichage des fichiers par date

ninho44

Bon ben la du coup je n'ai plus rien qui s'affiche...

Alors pour le filemtime c'est réglé...Par contre il a toujours du mal avec le asort()

J'ai fais comme tu m'a dit, donc j'ai fait print_r ($result); avant le asort(), et la le tableau ne s'affiche pas...pourtant le $result n'est pas vide....
Je comprend plus rien !!!
mercredi 11 juin 2008 à 15:41:24 | Re : Affichage des fichiers par date

malalam

Administrateur CodeS-SourceS
Hello,

il y a des paramètres que tu n'as pas dans le code proposé, tu ne rentres jamais dans le if().

Sinon :

<?php
function sortByMTime($a, $b) {
$aTime = filemtime($a);
$bTime = filemtime($b);
if($aTime === $bTime) {
return 0;
} elseif($aTime < $bTime) {
return 1;
} else {
return -1;
}
}

$aDir = scandir('.');
usort($aDir, 'sortByMtime');
print_r($aDir);
?>


A moduler selon le contexte (chemin différent, récursivité, etc). Mais tu as là un principe utilisable.
mercredi 11 juin 2008 à 15:53:04 | Re : Affichage des fichiers par date

ninho44

Alors j'ai bien compris le principe, sauf que ca bug toujours au niveau du asort()...
Warning: usort(): The argument should be an array

Et il ne veut pas m'afficher ce fichu tableau...

1 2

Cette discussion est classée dans : fichier, fichiers, chemin, if, listerep


Répondre à ce message

Sujets en rapport avec ce message

Tableau de fichiers [ par ninho44 ] 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 Probleme d'affichage du resultat d'un scan sur 2 colonnes [ par kilian67 ] Salut, j'ai un souci pour l'affichage des résultats d'un script que je souhaiterai affiché sur 2 voir 3 colonnes. Voici le script en question il fon trop de lignes, faire plusieur pages [ par shadow578 ] bonjour, Voilà j'ai fait un explorer de fichier en php, donc sa m'affiche les fichier avec la taille etc.. J'aimerai quand il y a plus de 30fichiers Tableau dans php [ par shadow578 ] Bonjour, Alors j'ai un petit script qui me permet de lister les fichiers présents dans le dossier, jusqu'à la tout va bien, mais j'aimerai les cla Upload de fichiers [ par Zebra1928 ] salut à tous;;j'ai la portion de code suivante:$chemin="/home/www.monsite.com";$chemin=addslashes($chemin);copy($fichier, $chemin);jusque là ça marche Chemin Fichier [ par The Molo ] Bonjour,  <?xml:namespace prefix = o ns = "urn:sche formulaire d'envoi de fichier sur FTP [ par putch ] salut à tous !voila j'ai une question qui me tracasse :j'ai un formulaire dans lequel je peux uploader plusieurs fichiers ( donc 5 input de type file Telecharger un fichier sur serveur [ par obcstaff ] Bonjour a tous, je m'explique, j'ai une gestion de fichier sur un intranet, pour uploader des fichiers, pas de probleme, par contre, je ne vois pas co Accès aux fichiers sécurisé en php [ par neodelphi ] Bonjour tout le monde, Je souhaitai récemment proteger l'accès a un fichier zip sur mon site perso pour le restreindre à seulement quelques personnes Faisable ou pas ? upload gros fichiers [ par caviar ] salut ...ça fait un moment que je cherche un script qui permette d'uploader de gros fichiers sur un serveur sans se tapper un connection time out ou u


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 4,009 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales