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 :

unlink avec condition si


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Femme Profil pro
    BTS SIO
    Inscrit en
    Janvier 2015
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 31
    Localisation : France, Jura (Franche Comté)

    Informations professionnelles :
    Activité : BTS SIO

    Informations forums :
    Inscription : Janvier 2015
    Messages : 53
    Points : 14
    Points
    14
    Par défaut unlink avec condition si
    Bonjour à tous,

    voila je voudrais faire un algo du genre que si les fichiers sont obsolete dans mon dossier les supprimer donc jai pense a faire ceci en algo

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    $month = Date('m');
    $annee = Date('Y');
        if ($annee<=($fichier[0])) {
    	if ($month<=($fichier[1])) {
    		if(isset($fichier[3])) {
    			$semaine = Date('d');
    			if ($semaine-$fichier[2]<=5){
     
    et unlink fichier non afficher

    sauf que je vois pas trop comment le coder vous auriez une idée s'il vous plait

  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
    Une belle usine à gaz
    D'ou vient $fichier ?

  3. #3
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    Une belle usine à gaz, certes, mais totalement incohérente.

    En gros, tu vérifies que l'année est inférieure à l'année en cours.
    Si c'est le cas, tu vérifies si le mois est inférieur au mois en cours.
    Si c'est le cas, tu vérifies si le jour est inférieur au jour en cours.
    Bref, dans ton code, un fichier du 10 février d'il y a 200 ans n'est pas obsolète...

  4. #4
    Membre à l'essai
    Femme Profil pro
    BTS SIO
    Inscrit en
    Janvier 2015
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 31
    Localisation : France, Jura (Franche Comté)

    Informations professionnelles :
    Activité : BTS SIO

    Informations forums :
    Inscription : Janvier 2015
    Messages : 53
    Points : 14
    Points
    14
    Par défaut
    bon alors j'ai fait ça

    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
    $month = Date('m');
    $annee = Date('Y');
     
     
    if ($annee>=($fichierasuppr[0])) {
    	if ($month>=($fichierasuppr[1])) {
    		if(isset($fichier[3])) {
    			$semaine = Date('d');
    			if ($semaine-$fichier[2]>=5){
     
    			}       
    		}
     
    	}
    }
                                }
                                unlink($fichierasuppr);
    mais j'ai cette erreur
    Warning: unlink() expects parameter 1 to be a valid path sur la ligne du unlink

    comment je peut faire pour m'en sortir

  5. #5
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    Bah oui... un chemin sur un serveur, c'est rarement un tableau...
    D'autre part, tu es fachée avec les OU ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    if(  // SI
        $fichier[0] < $annee  // l'année est 2014 ou moins
        || $fichier[1] < $mois  // OU le mois est inférieur au mois en cours (attention aux mois qui commencent à 0 en PHP
        || $fichier[2] < $jour  // OU le jour est inférieur au jour en cours
    ){
        // ALORS supprimer le fichier
    }

  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
    La bonne façon de comparer des dates c'est quand même de laisser PHP le faire, pas de découper tranche par tranche.

  7. #7
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut

    T'as raison sabotage.

  8. #8
    Membre à l'essai
    Femme Profil pro
    BTS SIO
    Inscrit en
    Janvier 2015
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 31
    Localisation : France, Jura (Franche Comté)

    Informations professionnelles :
    Activité : BTS SIO

    Informations forums :
    Inscription : Janvier 2015
    Messages : 53
    Points : 14
    Points
    14
    Par défaut
    $fichier est situer dans le dossier upload qui se trouve pour le moment en local apres ce sera mis sur le serveur
    le nom du fhichier est comme ca annee-mois-jour(si self)- nomfichier.pdf

    d'ou le decoupage....

    je sais que c un peu usine a gaz mais je vois pas vraiment comment faire en simple je fait toujours dans le compliquer

  9. #9
    Membre confirmé
    Homme Profil pro
    Déveleoppeur Web/Mobile
    Inscrit en
    Avril 2013
    Messages
    330
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Déveleoppeur Web/Mobile
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2013
    Messages : 330
    Points : 545
    Points
    545
    Par défaut
    Pour faire plus propre tu peux commencer par récupérer la date du nom de ton fichier et d'initialiser des variables DateTime, puis pour comparer les dates tu utilises le timestamp (c'est la valeur de la date en seconde) avec la méthode getTimeStamp de DateTime. Tu pourras ainsi plus facilement comparer n'importe quelle date

  10. #10
    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
    un exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <?php
    $nom = '2015-01-01-toto.pdf';
     
    $objDatefichier = date_create(substr($nom,0 ,10));
     
    if ($objDatefichier) {
       $objDatelimite = date_create('10 days ago');
       if ($objDatefichier <= $objDatelimite) {
           echo 'vieux fichier';
       }
    }
    else {
       echo 'mauvais nom de fichier';
    }

  11. #11
    Membre à l'essai
    Femme Profil pro
    BTS SIO
    Inscrit en
    Janvier 2015
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 31
    Localisation : France, Jura (Franche Comté)

    Informations professionnelles :
    Activité : BTS SIO

    Informations forums :
    Inscription : Janvier 2015
    Messages : 53
    Points : 14
    Points
    14
    Par défaut
    euh...oui je peu tjrs essayer mais je croyai que comme ca faisai partie du nom d'un fichier on ne pouvai pas le faire enfin bref je vais tenter le coup je revien vous dire....

  12. #12
    Membre à l'essai
    Femme Profil pro
    BTS SIO
    Inscrit en
    Janvier 2015
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 31
    Localisation : France, Jura (Franche Comté)

    Informations professionnelles :
    Activité : BTS SIO

    Informations forums :
    Inscription : Janvier 2015
    Messages : 53
    Points : 14
    Points
    14
    Par défaut
    bonjour à tous,

    bon bah j'ai pas réussi a juste afficher les fichiers a supprimer avec vos propositions

    donc je suis reparti sur le code code "usine à gaz" mais qui avec un echo me renvois bien les fichiers supprimer

    au final j'ai ce 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
    46
    47
    48
    49
    50
    <?php
     
     
    $dir_nom = "upload"; // dossier listé (pour lister le répertoir courant : $dir_nom = '.'  --> ('point')
    $dir = opendir($dir_nom) or die('Erreur de listage : le répertoire n\'existe pas'); // on ouvre le contenu du dossier courant
    $fichier= array(); // on déclare le tableau contenant le nom des fichiers
     
     
    while($element = readdir($dir)) {
    	if($element != '.' && $element != '..') {
    		if (!is_dir($dir_nom.'/'.$element)) {$fichier[] = $element;}
    		else {$dossier[] = $element;}
    	}
    }
     
     
     
     
    if(!empty($fichier)){
    	sort($fichier);// pour le tri croissant, rsort() pour le tri décroissant
    	echo "Liste des fichiers accessibles dans $dir_nom : \n\n<br /><br />";
                                foreach($fichier as $lien){
                                //$date  = substr($lien,0, 4);
                                //list($year, $month, $text, $extension) = split('[.-]', $lien);
                                $fichier = explode("-", $lien);
     
     
    $semaine = Date('d');
    $month = Date('m');
    $annee = Date('Y');
     
     
     
    if ($annee>=($fichier[0])) {
    	if ($month>=($fichier[1])) {
    		if(isset($fichier[3])) {
     
    			if ($semaine-$fichier[2]>5){
     
    			}       
    		}
     
     
    	}
    unlink($dir_nom/$fichier);
    }
                                }
    closedir($dir);
    }
    ?>
    mais bien sur c'est trop beau la ligne correspondant a unlink me renvoi cette erreur :

    Fatal error: Unsupported operand types in C:\wamp\www\local\suprimefichier.php on line 60

    du coup, je suis coincer

  13. #13
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    unlink($dir_nom/$fichier);


    Tu appliques à la programmation les techniques d'écriture automatique non ?

    Dans ton code, $dir_nom est une chaine, $fichier est un tableau.
    Donc en argument de la fonction unlink(), tu passes la division entre une chaine et un tableau et tu te demandes pourquoi ça ne marche pas ???

  14. #14
    Membre à l'essai
    Femme Profil pro
    BTS SIO
    Inscrit en
    Janvier 2015
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 31
    Localisation : France, Jura (Franche Comté)

    Informations professionnelles :
    Activité : BTS SIO

    Informations forums :
    Inscription : Janvier 2015
    Messages : 53
    Points : 14
    Points
    14
    Par défaut


    Mais alors comment je peu faire pour supprimer ces fichiers qui ne servent plus a rien



    j'ai écrit les unlink sous toute les formes ca marche paaaas
    je suis perdue

  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
    Nous t'avons fourni un code tout prêt.

  16. #16
    Membre à l'essai
    Femme Profil pro
    BTS SIO
    Inscrit en
    Janvier 2015
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 31
    Localisation : France, Jura (Franche Comté)

    Informations professionnelles :
    Activité : BTS SIO

    Informations forums :
    Inscription : Janvier 2015
    Messages : 53
    Points : 14
    Points
    14
    Par défaut
    Oui je sais que vous m'avez fourni un code et je vous en remercie beaucoup mais alors
    pour le problème c que je vais pas créer une variable a chaque foi pour supprimer le fichier correspondant
    donc faut que je fasse une fonction if année comme j'ai fait dans mon code pour me renvoyer une autre variable et supprimer ces fichier c'est bien cela?? donc il faudrait que je fasse cela ???

    et que je remplace $nom dans l'exemple de sabotage par $poubelle sauf que il n'en veut pas de cette fonction ca me dit a chaque foi que $poubelle existe pas mm quand je remplace $fichier par $poubelle

    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
    function poubelle ($poubelle)
    {
    if ($annee<=($fichier[0])) {
    	if ($month<=($fichier[1])) {
    		if(isset($fichier[3])) {
    			$semaine = Date('d');
    			if ($semaine-$fichier[2]<=5){
    				echo "<a href=\"$dir_nom/$lien \">".($fichier[3])." du ".$fichier[2]." ".($fichier[1])." ".$fichier[0]."</a><br />";
    			}       
    		}
    		else
    			echo "<a href=\"$dir_nom/$lien \">".($fichier[2])." ".($fichier[1])." ".$fichier[0]."</a><br />";
    	}
    }
                                }
    return $poubelle;
     
     
                            }
         echo $poubelle;

  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
    Il faut que tu fasses du KISS.
    Tu as déjà une boucle qui liste tes fichiers :
    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
    while($element = readdir($dir)) {
    	if($element != '.' && $element != '..') {
    		if (!is_dir($dir_nom.'/'.$element)) {
                              $objDatefichier = date_create(substr($nom,0 ,10));
                              if ($objDatefichier) {
                              $objDatelimite = date_create('10 days ago');
                              if ($objDatefichier <= $objDatelimite) {
                                   echo 'vieux fichier : ' . $element . '<br/>';
                              }
                              else {
                                  echo 'bon fichier : ' . $element . '<br/>';
                              }
                              }
                              else {
                                 echo 'mauvais nom de fichier : ' . $element . '<br/>';
                              }
                   }
    	}
    }

  18. #18
    Membre à l'essai
    Femme Profil pro
    BTS SIO
    Inscrit en
    Janvier 2015
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 31
    Localisation : France, Jura (Franche Comté)

    Informations professionnelles :
    Activité : BTS SIO

    Informations forums :
    Inscription : Janvier 2015
    Messages : 53
    Points : 14
    Points
    14
    Par défaut
    d'accord et apres si j'ai bien tout suivi
    je fais unlink($element) c'est bien cela ??

    sauf que ca me donne ca Warning: unlink(2014-01-age.pdf) No such file or directory
    pourtant mon fichier et bien present dans mon dossier

  19. #19
    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
    Il manque le chemin.

  20. #20
    Membre à l'essai
    Femme Profil pro
    BTS SIO
    Inscrit en
    Janvier 2015
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 31
    Localisation : France, Jura (Franche Comté)

    Informations professionnelles :
    Activité : BTS SIO

    Informations forums :
    Inscription : Janvier 2015
    Messages : 53
    Points : 14
    Points
    14
    Par défaut
    oups....

    jai corriger
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    unlink("$dir_nom/$element");
    mais euh y a rien qui pars de mon dossier
    pourtant unlink il s'ecrit bien comme cela non??

Discussions similaires

  1. Réponses: 6
    Dernier message: 08/06/2004, 14h51
  2. Sélection multi table avec condition
    Par iuz dans le forum Langage SQL
    Réponses: 8
    Dernier message: 05/05/2004, 15h04
  3. ALTER VIEW avec condition
    Par yan77 dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 05/04/2004, 17h22
  4. Index avec conditions
    Par marhnix dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 29/03/2004, 10h48
  5. boucle avec condition d'arret changeante
    Par NicoH dans le forum Langage
    Réponses: 3
    Dernier message: 10/06/2003, 11h48

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