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 :

[Dates] Listage + dernière modification


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 12
    Par défaut [Dates] Listage + dernière modification
    Bonjour, je suis en train de créer une page qui liste un dossier à la recherche d'images (png uniquement) et qui en fait un lien vers un fichier du même nom. Jusque là ca marche et ca me donne
    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
    46
    47
    48
     
    <?php
    function browse ($pDirectory, $pExtension)
    {
      if($handle = opendir($pDirectory))
      {
           while(false !== ($file = readdir($handle)))
          {
              $getExt = explode(".", $file);
              $countExt = count($getExt);
              $fExt = $countExt - 1;
              $myExt = $getExt[$fExt];
     
              if (($myExt == $pExtension) && ($file != ".") && ($file != ".."))
                  {$files[] = $file;}
          }
       }
    return $files;
    closedir($handle);
    }
     
    function ExtractChamp($chaine,$entier,$sep)
    {
    if($entier > 0)
    {
       $res=strtok($chaine,$sep);
       if($res!="")
       {
           for($i=1;$i<$entier;$i++)
           {
               $res=strtok($sep);
           }
       }
    }else{
     $res=false;
    }
     
       return($res);
    }
     
    $getFile = browse("/home/msncreative/onglets/winks", "png");
     
     
    foreach ($getFile as $myFile)
     
    {echo "<a href=/onglets/wink.php?f=" .ExtractChamp("$myFile",1,"."). "><img src=/onglets/winks/$myFile></a>\n";}
     
    ?>
    Je voudrais que les images ayant été uploadés dans les 7 derniers jours soient mis en dernier j'ai donc fait un bout de code pour déterminer la date de modification


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    <?php
    $filename = 'winks/bouh.png';
    $now=time();
    $date1 = mktime(0, 0, 0, date("m", filemtime( $filename)), date("d", filemtime( $filename)), date("Y", filemtime( $filename)));
    $date2 = mktime(0, 0, 0, date("m", $now), date("d", $now), date("Y", $now));
     
    $soustraction = $date2-$date1;
    $resultat = (int)($soustraction/(60*60*24));
    echo ($resultat);
     
    ?>
    Si je le fais pour une image en paticulier (ici bouh.png) ca me donne bien la bonne date mais si je l'inclut dans la partie précédente pour le cas général, chaque image aurait été uploadé il y a 13056 jours

    Je fais du php depuis quelques semaines seulement allez y doucement

    Merci

  2. #2
    Membre émérite

    Profil pro
    Inscrit en
    Mai 2005
    Messages
    657
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 657
    Par défaut
    Salut,

    A priori si ça marche pour un fichier, ya pas de raison que ça ne marche pas dans une boucle
    Par contre je vois pas trop l'interet des mktime() ici, filemtime() te renvoie déjà un timestamp unix il me semble.
    J'aurais fait simplement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $resultat = (filemtime($filename) - now()) / (24*3600)

    Cela dit pour ton problème ça ne viens probablement pas de là
    Est-ce que tu es sur que de bien passer le chemin à filemtime() ? Etant donné que $file ne contient que le nom du fichier, il ne faut pas oublier de faire filemtime($pDirectory.'/'.$file).
    Si ça ne vient pas de là, montre-nous comment tu intégres ton code dans la boucle

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 12
    Par défaut
    J'aurais fait simplement :
    Comme je l'ai dit je suis encore au niveau de faire un code qui marche, pas encore un code optimisé à fond . Par contre ca me donne rien ca, tout blanc le résultat (oui j'ai mis un echo $resultat; ^^).

    Effectivement, c'était un problme de filename et comme il ne trouvait pas de fichier il comptait depuis le 1/1/1970. J'ai bien le bon nombre de jours a partir duquel ca a été uploadé à présent, je peux passer à l'étape suivante, trier dans l'ordre, merci


    edit : résolu même si c'est fait comme un porc

    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
     
    foreach ($getFile as $myFile){
    $filename = "./winks/$myFile";
    $date1 = mktime(0, 0, 0, date("m", filemtime( $filename)), date("d", filemtime( $filename)), date("Y", filemtime( $filename)));
    $date2 = mktime(0, 0, 0, date("m", $now), date("d", $now), date("Y", $now)); 
    $soustraction = $date2-$date1;
    $resultat = (int)($soustraction/(60*60*24));
     
    if ($resultat > 6)
    {echo "<a href=/onglets/wink.php?f=" .ExtractChamp("$myFile",1,"."). "><img src=/onglets/winks/$myFile></a>\n";} 
     
    }
    foreach ($getFile as $myFile){
    $filename = "./winks/$myFile";
    $date1 = mktime(0, 0, 0, date("m", filemtime( $filename)), date("d", filemtime( $filename)), date("Y", filemtime( $filename)));
    $date2 = mktime(0, 0, 0, date("m", $now), date("d", $now), date("Y", $now)); 
    $soustraction = $date2-$date1;
    $resultat = (int)($soustraction/(60*60*24));
     
    if ($resultat <= 6)
    {echo "<a href=/onglets/wink.php?f=" .ExtractChamp("$myFile",1,"."). "><img src=/onglets/winks/$myFile></a>\n";} 
     
    }
    ?>

  4. #4
    Membre émérite

    Profil pro
    Inscrit en
    Mai 2005
    Messages
    657
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 657
    Par défaut
    Autant pour moi, la fonction pour récuperer le temps actuel est time() et pas now() ^^
    Mais si ton pb est résolu, c'est l'essentiel

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 17/07/2007, 15h21
  2. [HP-UX] Comparaison date de dernière modif
    Par seawolfm dans le forum Unix
    Réponses: 2
    Dernier message: 31/05/2007, 22h14
  3. Réponses: 2
    Dernier message: 17/12/2005, 20h56
  4. Date le dernière modification
    Par np-petot dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 07/10/2005, 16h07
  5. date de dernière modification d'une table ?
    Par NiBicUs dans le forum Requêtes
    Réponses: 3
    Dernier message: 17/12/2004, 18h11

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