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 :

Trier array par date


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 45
    Points : 24
    Points
    24
    Par défaut Trier array par date
    Bonjour,

    Voila mon problème :
    Je chercher à lister un répertoire qui contient des fichiers dont la date de publication est contenu dans le nom.

    Les fichiers sont donc de la forme :
    monfichier-01-11-2013.pdf

    J'ai essayé avec une expression régulière pour repérer la date puis de mettre dans ca dans un array pour le trier.
    Le problème, c'est que lorsque plusieurs fichiers ont la même date, il n'en affiche qu'un seul.

    Comment contourner ce problème ?

    Voila mon code :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    $nom_du_dossier = $dossier;
    $rep = scandir($nom_du_dossier);
    $tableau = array_slice($rep, 2);  		
    echo '<ul>';		
    preg_match("/([0-9]{2})-([0-9]{2})-([0-9]{4})/", $nomFichier, $m);
    $tableau[$m[3]-$m[2]-$m[1]] = $nomFichier;
    ksort($tableau);
    foreach($tableau as $fichier){
    	$texte = str_replace("_", "'",$fichier);
    	$texte = substr(substr($texte,2),0,-4); // on supprime l'extension et les 2 premiers caracteres				
    	echo '<li><a href="'.$nom_du_dossier .$fichier.'" download>'.$texte.'</a></li>';
    }  
    echo '</ul>';

    Merci

  2. #2
    Expert éminent
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 234
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 234
    Points : 8 497
    Points
    8 497
    Billets dans le blog
    17
    Par défaut
    une expression régulière pour repérer la date
    Pas besoin pour récupérer les 10 derniers caractères d'un nom de fichier.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $tableau = array_slice($rep, 2);
    Tu pars du principe que les deux premières entrées sont et seront toujours "." et "..", qu'est-ce qui te l'assure ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $tableau[$m[3]-$m[2]-$m[1]] = $nomFichier;
    Ici tu écrases le précédent fichier de la même date.

    => Utilise usort( ) sur ton tableau de fichiers, ce sera bien plus simple.

  3. #3
    Expert confirmé Avatar de papajoker
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2013
    Messages
    2 204
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nièvre (Bourgogne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2013
    Messages : 2 204
    Points : 4 677
    Points
    4 677
    Par défaut
    recup que les fichiers
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $fichiers = glob("*.pdf");
    je ferais l'inverse
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    foreach($fichiers as $nomFichier){
      preg_match("/([0-9]{2})-([0-9]{2})-([0-9]{4})/", $nomFichier, $m);
      $tableau[$nomFichier] = $m[3].$m[2].$m[1];
    }
    comme cela ok pour doublons

    trier sur valeur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    asort($tableau) //arsort()

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

Discussions similaires

  1. [PHP 4] Trier news par date
    Par QuentinBross dans le forum Langage
    Réponses: 2
    Dernier message: 14/07/2011, 15h23
  2. awk, trier lignes par date
    Par donkeyshot dans le forum Unix
    Réponses: 0
    Dernier message: 17/06/2010, 12h28
  3. [Paradox] Trier par date
    Par Fabs dans le forum Bases de données
    Réponses: 5
    Dernier message: 08/11/2006, 19h41
  4. [JSP] Trier par date une liste de fichier en JSP
    Par Total dans le forum Servlets/JSP
    Réponses: 10
    Dernier message: 21/02/2006, 15h38
  5. Trier mes requete par date au format dd/mm/yy
    Par danje dans le forum Langage SQL
    Réponses: 6
    Dernier message: 19/09/2005, 18h06

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