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 :

suppression de fichier sauf ceux d'aujourdhui [PHP 4]


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de pitoumad
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    83
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 83
    Par défaut suppression de fichier sauf ceux d'aujourdhui
    Bonjour
    Je cherche à effacer dans un répertoire précis les fichers créé jusqu'à hier : donc tous sauf ceux de la date du jour.
    J'ai commencé par tester la date des fichiers de mon répertoire en l'affichant, mais cela me retourne systématiquement le 1/01/0970 alors qu'ils ont été créé ces jours-ci.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    $handle=opendir('./extract');
    while ($file = readdir($handle)) 
    {
    if (($file!=".") and ($file!="..")) 
    {
    echo "Fichier ".$file."<br>";
    echo "Dernière modification du fichier : " . date("d M Y",filemtime($file))."<br>"; 
    }
    }
    closedir($handle);
    Remarque stat me fait la même erreur.
    Pouvez-vous m'aider à récupérer la bonne date de création de mes fichiers ?
    Merci


  2. #2
    Membre chevronné
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    388
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 388
    Par défaut
    Lu,

    deux extraits du manuel:
    filemtime
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <?php
    $filename = 'somefile.txt';
    if (file_exists($filename)) {
        echo "$filename was last modified: " . date ("F d Y H:i:s.", filemtime($filename));
    }
    ?>
    readdir
    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
    <?php
     
    if ($handle = opendir('/path/to/files')) {
        echo "Directory handle: $handle\n";
        echo "Files:\n";
     
        /* This is the correct way to loop over the directory. */
        while (false !== ($file = readdir($handle))) {
            echo "$file\n";
        }
     
        /* This is the WRONG way to loop over the directory. */
        while ($file = readdir($handle)) {
            echo "$file\n";
        }
     
        closedir($handle);
    }
    ?>

  3. #3
    Membre confirmé Avatar de pitoumad
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    83
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 83
    Par défaut
    ok j'ai rectifié, mais mes dates sont toujours en 1970 !

    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
     
    if ($handle = opendir("./extract")) 
    {
     echo "Directory handle: ".$handle."<br>";
     while (($file = readdir($handle))!== false) 
      {
          if (($file!=".") and ($file!="..")) 
          {
              if (file_exists("./extract/".$file))
             {
    	echo $file." was last modified: " . date ("d/m/Y", filemtime($file));
              }
          }
      }
    closedir($handle);
    }
    Avec pour résultat :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Directory handle: Resource id #2
    Fich1.pdf was last modified: 01/01/1970
    Fich2.pdf was last modified: 01/01/1970
    Je trouve ça bizarre le "Resource id #2" pour handle ...

  4. #4
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Par défaut
    Vous devez développez sans les erreurs ? filemtime devrait afficher de beaux warnings puisque vous lui fournissez des chemins incomplets qui vous valent également ce résultat de 0 (donc 01/01/1970).

    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
    <?php
    define('REPERTOIRE', './extract/'); // with trailing slash
     
    header('Content-type: text/plain');
     
    $today = strtotime('today');
     
    if ($handle = opendir(REPERTOIRE)) {
        while (($file = readdir($handle)) !== FALSE) {
            if (/*!in_array($file, array('.', '..'))*/is_file(REPERTOIRE . $file)) {
                if (filemtime(REPERTOIRE . $file) < $today) {
                    //unlink(REPERTOIRE . $file);
                    echo $file, PHP_EOL;
                }
            }
        }
        closedir($handle);
    }
    Enfin, le "Resource id #2" n'a rien d'anormal puisque vous tentez d'afficher une variable de type ressource.

  5. #5
    Membre confirmé Avatar de pitoumad
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    83
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 83
    Par défaut
    Merci ! ça fonctionne maintenant !


    Voici le code final que j'ai utilisé :

    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
    define('REPERTOIRE', './extract/');
    $today = strtotime('today');
    if ($handle = opendir(REPERTOIRE)) 
    {
    	while (($file = readdir($handle))!== false) 
    	{
    		if (($file!=".") and ($file!="..")) 
    		{
    			if (is_file(REPERTOIRE . $file))
    			{
    				if (date ("d/m/Y", filemtime(REPERTOIRE . $file)) < date ("d/m/Y",$today))
    				{
    					unlink(REPERTOIRE . $file);
    				}
    			}
    		}
    	}
    	closedir($handle);
    }

  6. #6
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Par défaut
    Sauf qu'une comparaison lexicographique de dates sur un format français est faux ...

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

Discussions similaires

  1. Suppression fichiers sauf le dernier créé
    Par LuffyyffuL dans le forum Shell et commandes GNU
    Réponses: 5
    Dernier message: 22/11/2018, 13h37
  2. Réponses: 0
    Dernier message: 01/02/2010, 14h51
  3. Réponses: 4
    Dernier message: 16/04/2004, 08h20
  4. Auto suppression de fichier
    Par pato dans le forum Langage
    Réponses: 4
    Dernier message: 05/03/2004, 09h09
  5. Suppression de fichiers
    Par wasch dans le forum C++Builder
    Réponses: 6
    Dernier message: 20/11/2003, 16h37

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