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 :

Classé par date puis aficher le 10 dernier fichier


Sujet :

Langage PHP

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Juillet 2014
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Juillet 2014
    Messages : 21
    Points : 7
    Points
    7
    Par défaut Classé par date puis aficher le 10 dernier fichier
    Bonsoir,

    J'ai un code php qui me classe par date mes fichiers, le problème c'est qu'il m'affiche toute arborescence donc j'aimerais un moyen d"affiché que les 10 dernier fichier ajouté.

    Voici le code

    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
     
    <?php
     
    // repertoire a scanner :
    $dir= "dossier";
     
    // comparateur de date
    function dateComparator($a, $b) {
        if ($a['date_modification'] == $b['date_modification']) return 0;
        return ($b['date_modification'] < $a['date_modification']) ? -1 : 1;
    }
     
    // scan du repertoire
    $iterator = new RecursiveIteratorIterator(
    		new RecursiveDirectoryIterator($dir), RecursiveIteratorIterator::CHILD_FIRST);
     
    $fichiers=array();
    foreach ($iterator as $path) {
     
    	// si il s'agit d'un fichier
      if ($path->isFile())
     
        // on cree une matrice d'informations sur le fichier
      	$fichiers[]= array(
      		"nom" => pathinfo($path->__toString(), PATHINFO_BASENAME), 
      		"date_modification" => filemtime($path)
      	);
     
    }
     
     
    // tri par date
    usort($fichiers, 'dateComparator');
     
    // affichage du tableau de fichiers apres tri par date
    echo "<h3>Derniers fichiers téléchargés : </h3>";
    echo "<hr/>";
    foreach($fichiers as $key => $item) {
     
    	echo "[".$key."] ".date("d/m/Y H:i:s", $item['date_modification'])." | ".$item['nom']."<br/>";
    }
     
    echo "<hr/>";
     
    ?>
    Si quelqu'un a une idée je suis preneur.

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Découpe ton tableau de résultat avec slice()
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Juillet 2014
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Juillet 2014
    Messages : 21
    Points : 7
    Points
    7
    Par défaut
    merci pour la réponse, mais ça ne m’avance pas, je connait pas de php

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    usort($fichiers, 'dateComparator');
    $fichiers = array_slice($fichiers, -10);
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Juillet 2014
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Juillet 2014
    Messages : 21
    Points : 7
    Points
    7
    Par défaut
    Merci mais il y a un petit soucis, le tri n'est plus pris en compte.

    Screen pour comprendre

    Avant :

    Nom : 4FUaY0O.png
Affichages : 163
Taille : 14,7 Ko

    Après :

    Nom : q7fNuC0.png
Affichages : 168
Taille : 6,3 Ko

    Donc on peut faire comment pour re-trier les résultat ?

  6. #6
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Après c'est trié par ordre décroissant, comme avant.
    Mais c'est peut être l'autre bout que tu veux :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $fichiers = array_slice($fichiers, 0, 10);
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  7. #7
    Futur Membre du Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Juillet 2014
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Juillet 2014
    Messages : 21
    Points : 7
    Points
    7
    Par défaut
    Parfait, merci pour ton aide.

    Bonne fin de soirée

  8. #8
    Futur Membre du Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Juillet 2014
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Juillet 2014
    Messages : 21
    Points : 7
    Points
    7
    Par défaut
    Bonjour,

    Je ré-ouvre le sujet car je n'arrive pas a caché les fichiers ou dossier qui commence par '.'

    Une idée ?

    Bonne soirée

  9. #9
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     if ($path->isFile()) {
       $nom = pathinfo($path->__toString(), PATHINFO_BASENAME);
       if ($nom != '..' && $nom != '.' ) {
        // on cree une matrice d'informations sur le fichier
      	$fichiers[]= array(
      		"nom" => $nom, 
      		"date_modification" => filemtime($path)
            );
         }
    }
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  10. #10
    Futur Membre du Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Juillet 2014
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Juillet 2014
    Messages : 21
    Points : 7
    Points
    7
    Par défaut
    Merci de ta réponse mais cela ne fonctionne pas ou peut c'est moi

    le code:

    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
    <?php
     
    // repertoire a scanner :
    $dir= "/var/www/stock";
     
    // comparateur de date
    function dateComparator($a, $b) {
        if ($a['date_modification'] == $b['date_modification']) return 0;
        return ($b['date_modification'] < $a['date_modification']) ? -1 : 1;
    }
     
    // scan du repertoire
    $iterator = new RecursiveIteratorIterator(
    		new RecursiveDirectoryIterator($dir), RecursiveIteratorIterator::CHILD_FIRST);
     
    $fichiers=array();
    foreach ($iterator as $path) {
    	// si il s'agit d'un fichier
       if ($path->isFile()) {
    		$nom = pathinfo($path->__toString(), PATHINFO_BASENAME);
    		if ($nom != '..' && $nom != '.' ) {
    		// on cree une matrice d'informations sur le fichier
    			$fichiers[]= array(
    			"nom" => $nom, 
    			"date_modification" => filemtime($path)
    			);
    		}
    	}
     
    }
     
    // tri par date
    usort($fichiers, 'dateComparator');
    $fichiers = array_slice($fichiers, 0, 20);
     
    // affichage du tableau de fichiers apres tri par date
    echo "<h3>Derniers fichiers téléchargés : </h3>";
    echo "<hr/>";
     
    foreach($fichiers as $key => $item) {
    	echo "[".$key."] ".date("d/m/Y H:i:s", $item['date_modification'])." | ".$item['nom']."<br/>";
    }
    echo "<hr/>";
     
    ?>

  11. #11
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Plus simplement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $iterator = new RecursiveIteratorIterator(
    		new RecursiveDirectoryIterator($dir, RecursiveDirectoryIterator::SKIP_DOTS), RecursiveIteratorIterator::CHILD_FIRST);
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  12. #12
    Futur Membre du Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Juillet 2014
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Juillet 2014
    Messages : 21
    Points : 7
    Points
    7
    Par défaut
    ça ne doit pas être la journée

    Rien a changé, j'ai toujours les dossiers et fichiers qui s'affiche.

  13. #13
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    En fait, je ne comprends pas bien ce que tu obtiens.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  14. #14
    Futur Membre du Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Juillet 2014
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Juillet 2014
    Messages : 21
    Points : 7
    Points
    7
    Par défaut
    Donc pour faire vite

    J'ai mon dossier avec (.bash_history .htpasswd .htaccess .... et un dossier .config ou dedans j'ai les dernier fichier du screen soit des .sh)

    Mon arborescence:
    Stock/
    /.config
    /dossier ....
    /.htaccess
    /.bash_history
    /index.php
    /.content.txt

    Le résultat du script:


  15. #15
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    ahhh j'avais mal lu
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if ($path->isFile()) {
       $nom = pathinfo($path->__toString(), PATHINFO_BASENAME);
       if (substr($nom, 0, 1) != '.') {
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  16. #16
    Futur Membre du Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Juillet 2014
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Juillet 2014
    Messages : 21
    Points : 7
    Points
    7
    Par défaut
    Ya du mieux mais c'est pas tout à fait ça.

    Les fichier avec le . devant ne sont plus afficher mais le dossier ".config" avec le script sh reste.


  17. #17
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    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
    class RecursiveDotFilterIterator extends  RecursiveFilterIterator
    {
        public function accept()
        {
            return substr($this->current()->getFilename(), 0, 1) !== '.';
        }
    }
     
    $iterator = new RecursiveIteratorIterator(
        new RecursiveDotFilterIterator(
            new RecursiveDirectoryIterator('.')
        )
    );
     
    $fichiers=array();
    foreach ($iterator as $path) {
     ............
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  18. #18
    Futur Membre du Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Juillet 2014
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Juillet 2014
    Messages : 21
    Points : 7
    Points
    7
    Par défaut
    Ok merci, je te dis ça ce soir

  19. #19
    Futur Membre du Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Juillet 2014
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Juillet 2014
    Messages : 21
    Points : 7
    Points
    7
    Par défaut
    Le probleme c'est que tu utilise plus $dir= "/var/www/stock/"

    donc ça m'affiche les dossier ou est le script.

    Edit

    c'est bon j'ai fait une modif

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $iterator = new RecursiveIteratorIterator(
        new RecursiveDotFilterIterator(
            new RecursiveDirectoryIterator($dir)
        )
    );
    Merci pour ta persévérance et désolé du dérangement, bonne soirée a toi.

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

Discussions similaires

  1. Réponses: 6
    Dernier message: 13/09/2012, 08h24
  2. Liste d'articles classée par dates
    Par Scots dans le forum C#
    Réponses: 33
    Dernier message: 21/03/2012, 10h53
  3. [debutant] Recherche de repertoire par date de dernieres connections
    Par cvid07 dans le forum Shell et commandes GNU
    Réponses: 3
    Dernier message: 07/11/2007, 16h07
  4. [Spip] afficher tous mes articles de la rubrique sauf les 4 derniers (par date)
    Par kikirun dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 1
    Dernier message: 28/06/2007, 17h01
  5. Problème de tri sur les dates par année puis mois
    Par rob2-9 dans le forum Access
    Réponses: 26
    Dernier message: 11/08/2006, 11h04

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