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

PHP & Base de données Discussion :

Supprimer les photos inutiles du serveur [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre à l'essai
    Inscrit en
    Novembre 2009
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 31
    Points : 16
    Points
    16
    Par défaut Supprimer les photos inutiles du serveur
    Bonjour,

    L'upload de photo fonctionne très bien, en enregistrant la photo dans un dossier spécifié du serveur, et le nom de cette photo dans un champs de la base de donnée.
    Pour différentes raisons, des photos peuvent être enregistrées malgré leur inutilité sans inscrire leur nom dans la base de donnée (c'est cette faille que je compte exploiter).
    Je voudrais de temps en temps exécuter un script visant à supprimer ces photos inutiles du serveur. Je pense être proche de la solution, mais il me manque le ptit quelque chose ... ... comme d'habitude.

    Voici le script auquel je pense:


    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
     
    // On se connecte à la base
    $link = mysql_connect("...", "...", "...");
    mysql_select_db("...");
     
     
    // On crée la requête dans la table qui se nomme annonce
    $select = "SELECT * FROM annonces";
    $result = mysql_query($select,$link);
    $data = mysql_fetch_array($result);
    $photo = $data['photo'];
     
     
    // On ouvre le dossier.
    $dossier = "Photos";
    $repertoire = opendir($dossier);
     
     
    // On lance notre boucle qui lira les fichiers un par un.
    while($fichier = readdir($repertoire))
            {
     
    // Si le contenu du répertoire est différent de la variable photo, on supprime            
    if($fichier != ".." AND $fichier != "." AND $fichier != $photo)
                    {
                    unlink("Photos/$fichier");
                    }
                    else
                    {
                    echo 'FICHIERS NON SUPPRIMES CAR PRESENTS DANS LA BASE DE DONNEE';
                    }
     
     
            }
    closedir($repertoire);
    // On ferme !
    Je pense que le problème vient de la variable $photo, puisqu'elle ne contient qu'une valeur alors qu'il faudrait qu'elle contienne toutes les valeurs inscrites dans la base de donnée auxquelles je ne veux pas toucher.

    Merci à qui m'enlèvera cette aiguille à tricoter du pied

  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
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    while($data = mysql_fetch_array($result)) {
    $photos[] = $data['photo'];
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if($fichier != ".." AND $fichier != "." AND !in_array($fichier, $photos))
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre à l'essai
    Inscrit en
    Novembre 2009
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 31
    Points : 16
    Points
    16
    Par défaut
    Bon ... ben merci sabotage ... ça ne t'aura pas pris bien longtemps ... mais à moi si .

    Voilà le code final si certains en ont besoin un jour.

    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
    // On se connecte à la base
    $link = mysql_connect("...", "...", "...");
    mysql_select_db("...");
     
     
    // On crée la requête dans la table qui se nomme annonce
    $select = "SELECT * FROM annonces";
    $result = mysql_query($select,$link);
     
    while($data = mysql_fetch_array($result)) 
    {  $photos[] = $data['photo'];  }
     
     
    // On ouvre le dossier.
    $dossier = "Photos";
    $repertoire = opendir($dossier);
     
     
    // On lance notre boucle qui lira les fichiers un par un.
    while($fichier = readdir($repertoire))
            {
     
    // Si le contenu du répertoire est différent de la variable photo, on supprime            
                    if($fichier != ".." AND $fichier != "." AND !in_array($fichier, $photos))
     
                    {
                    unlink("Photos/$fichier");
                    }
                    else
                    {
                    echo 'FICHIERS NON SUPPRIMES CAR PRESENTS DANS LA BASE DE DONNEE';
                    }
     
     
            }
    closedir($repertoire);
    // On ferme !
    A ta première correction,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    while($data = mysql_fetch_array($result)) 
    {  $photos[] = $data['photo'];  }
    le [] a coté de $photo ... cela signifie "ensemble de resultats" c'est ca?

    De la même facon qu'à ta seconde correction,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    !in_array($fichier, $photos)
    Cela signifie t il, "ce qui n'est pas dans la réponse array incluant dans $fichier le contenu $photo" ??
    Ou bien j'ai tout faux ... .

    Bref' dans tous les cas merci beaucoup pour ton aide Sabotage .

  4. #4
    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
    $tableau[] signifie "un nouvel élement dans le tableau $tableau"

    c'est comme si tu écrivais $tableau[x] avec x qui augmente a chaque fois
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

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

Discussions similaires

  1. supprimer les précédentes connexions au serveur
    Par laure07 dans le forum Windows
    Réponses: 2
    Dernier message: 13/09/2012, 08h36
  2. [Free Pascal] Programme qui supprime les espaces inutiles dans une chaîne
    Par joreveur dans le forum Free Pascal
    Réponses: 18
    Dernier message: 24/08/2012, 16h51
  3. supprimer les lignes inutiles
    Par lebeniste dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 16/03/2009, 11h03
  4. supprimer les info sur mon serveur TOMCAT exp err 404
    Par liquideshark dans le forum Tomcat et TomEE
    Réponses: 0
    Dernier message: 27/09/2008, 12h39
  5. Réponses: 1
    Dernier message: 09/07/2007, 14h45

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