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 d'un fichier en fonction d'une table


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 21
    Points : 16
    Points
    16
    Par défaut Suppression d'un fichier en fonction d'une table
    Bonjour,

    J'aimerai supprimer dans un dossier "photos", toutes les photos qui ne sont pas présentes dans ma table "tb_annonces_photos".

    J'ai cherché un peu comment faire et me voici avec un code qui me supprime toutes les photos de mon dossier sans exception.

    le voici :

    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
    //selection de toutes les entrées dans tb_annonces photos
    $dbreq = "SELECT * FROM tb_annonces_photos ORDER BY id";
    $dbres = mysql_query($dbreq);
     
    $i = 0 ;
    while ($dbpart = mysql_fetch_row($dbres)) {
       $tab[$i] = $dbpart[0] ;
       $i++ ;
    }
     
    //print_r($tab);
     
     
    $chemin = '.\photos\.';
     
    $handle = opendir($chemin);
     
    while (false !== ($file = readdir($handle))) {
    	if ($file != "." && $file != "..") {
    		if (!(in_array($file,$tab))) { /* si fichier dans repertoire mais absent de la base : on l'efface */
    			echo "$file\n";
    			//unlink($chemin.'/'.$file) ;
    		}
    	}
    }
    closedir($handle);

    Voyez-vous ce qui cloche ?

  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
    As-tu contrôlé ce que contenait $tab ?

    Au passage tu n'as pas besoin du $i
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    while ($dbpart = mysql_fetch_row($dbres)) {
       $tab[] = $dbpart[0] ;
    }
    (et ne fais pas un SELECT * pour n'utiliser qu'une seule colonne ensuite)

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 21
    Points : 16
    Points
    16
    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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    //selection de toutes les entrées dans tb_annonces photos
    $dbreq = "SELECT nom FROM tb_annonces_photos ORDER BY id";
    $dbres = mysql_query($dbreq);
     
     
    while ($dbpart = mysql_fetch_row($dbres)) {
       $tab[] = $dbpart[0] ;
    }
     
     
    //print_r($tab);
     
     
    $chemin = '.\photos\.';
     
    $handle = opendir($chemin);
     
    while (false !== ($file = readdir($handle))) {
    	if ($file != "." && $file != "..") {
    		if (!(in_array($file,$tab))) { /* si fichier dans repertoire mais absent de la base : on l'efface */
    			echo "$file\n";
    			//unlink($chemin.'/'.$file) ;
    		}
    	}
    }
    closedir($handle);
    Voici le code corrigé mais le problème demeure.

    Un print_r de $tab me retourne ceci:

    Array ( [0] => 20050224020221.jpg [1] => 20060414120433.jpg [2] => 20050224020210.jpg [3]....etc.....

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 21
    Points : 16
    Points
    16
    Par défaut
    la boucle fonctionne bien en fait,
    c'était simplement le \. à la fin de $chemin qui faisait effacer le dossier entier

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 30/06/2011, 20h42
  2. sed et ajout d'une ligne au début d'un fichier en fonction d'une condition
    Par sheepolata dans le forum Administration système
    Réponses: 2
    Dernier message: 14/10/2010, 11h23
  3. Supprimer des fichiers en fonction d'une date
    Par Sh4dow49 dans le forum Administration système
    Réponses: 1
    Dernier message: 02/06/2009, 22h36
  4. Détecter les suppression dans un fichier qui sert à alimenter une BDD
    Par yacinechaouche dans le forum Algorithmes et structures de données
    Réponses: 15
    Dernier message: 15/07/2008, 15h42
  5. suppression fichier en fonction d'une date
    Par kalyparker dans le forum Scripts/Batch
    Réponses: 3
    Dernier message: 02/07/2007, 14h19

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