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 :

Comparer des dossiers sur ftp et enregistrement en BD ?


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Inscrit en
    Septembre 2010
    Messages
    128
    Détails du profil
    Informations forums :
    Inscription : Septembre 2010
    Messages : 128
    Points : 51
    Points
    51
    Par défaut Comparer des dossiers sur ftp et enregistrement en BD ?
    Bonjour,

    Je tente de comparer des noms de dossiers enregistrer en BD et des dossiers présent sur mon ftp pour afficher que les dossier qui ne sont pas présent en BD mais ça bugeeeeeeee !!

    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
        $adresse = 'photo/';
        $dossierftp = opendir($adresse);
        //on va chercher le nom des dossiers
        $query = mysql_query("SELECT dossier_image FROM MATABLE");
     
        while($page = mysql_fetch_array($query))
        {
        //on va chercher les dossiers sur ftp
           while ($Fichier = readdir($dossierftp))
           { 
              if ($Fichier != "." && $Fichier != ".." && $Fichier != $page['dossier_image'])
              {
                 echo 'Dossier à effacer : '.$Fichier.'<br/>';
              }
           }
        }
        closedir($dossierftp); //Fermeture du dossier.
        ?>
    Mon code affiche tout les dossiers au lieu de m'afficher que les dossiers en trop .. pourquoi ?

    Si j'inverse les boucles, je n'ai plus rien..

    Merci

  2. #2
    Membre du Club
    Inscrit en
    Septembre 2010
    Messages
    128
    Détails du profil
    Informations forums :
    Inscription : Septembre 2010
    Messages : 128
    Points : 51
    Points
    51
    Par défaut
    J'insiste un peut pour obtenir une réponse ...

    Si je fais :
    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
        <?php
        $adresse = 'photo/';
        $dossierftp = opendir($adresse);
        //on va chercher le nom des dossiers
        $query = mysql_query("SELECT dossier_image FROM MATABLE");
     
        //on va chercher les dossiers sur ftp
           while ($Fichier = readdir($dossierftp))
           {
            while($page = mysql_fetch_array($query))
            {
              if ($Fichier != "." && $Fichier != ".." && $Fichier != $page['dossier_image'])
              {
                 echo 'Dossier à effacer : '.$Fichier.'<br/>';
              }
             else
             {
             echo 'Dossier à effacer : '.$Fichier.'<br/>';
             }
           }
        }
        closedir($dossierftp); //Fermeture du dossier.
        ?>
    J'ai un gros kedal.

    Si j'inverse les 2 boucles, c'est le "echo" du "if" qui renvoie tout les dossiers sans exceptions.

    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
        <?php
        $adresse = 'photo/';
        $dossierftp = opendir($adresse);
     
        $query = mysql_query("SELECT dossier_image FROM MATABLE");
     
        while($page = mysql_fetch_array($query))
        {
            while ($Fichier = readdir($dossierftp))
            {
                if ($Fichier != "." && $Fichier != ".." && $Fichier != $page['dossier_image'])
                {
                    echo 'Dossier à effacer : '.$Fichier.'<br/>';
                }
                else
                {
                    echo 'Dossier à effacer : '.$Fichier.'<br/>';
                }
            }
        }
        closedir($dossierftp);
        ?>
    Dans les 2 cas, le "else" ne renvoie rien et le "if" ne me renvoie pas ce que j'attends !

    Le champ "dossier_image" est un champ de type INT(10) qui enregistre le timestamp du moment. Mes dossiers portent donc comme nom le timestamp du moment ou il sont créés.

    J'ai beau tout contrôler et re contrôler ... je ni pige rien ... je ne vois pas pourquoi ça cloche.

    Un surdoué du PHP de passage dans le coin ne serait pas de refus.

    Merci

  3. #3
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 727
    Points
    10 727
    Par défaut
    faut d'hab faire la liste des dossier en ensuite la comparer

  4. #4
    Membre du Club
    Inscrit en
    Septembre 2010
    Messages
    128
    Détails du profil
    Informations forums :
    Inscription : Septembre 2010
    Messages : 128
    Points : 51
    Points
    51
    Par défaut
    C'est ce que fais mon premier code, non ??

    La première boucle va chercher les dossiers puis la seconde va chercher les noms en BD..puis je compare.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
        //on va chercher les dossiers sur ftp
           while ($Fichier = readdir($dossierftp))
           {
       //on va chercher les dossiers en bd
            while($page = mysql_fetch_array($query))
            {
       //on compare
              if ( ...

  5. #5
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 727
    Points
    10 727
    Par défaut
    Citation Envoyé par tryan Voir le message
    C'est ce que fais mon premier code, non ??

    La première boucle va chercher les dossiers puis la seconde va chercher les noms en BD..puis je compare.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
        //on va chercher les dossiers sur ftp
           while ($Fichier = readdir($dossierftp))
           {
       //on va chercher les dossiers en bd
            while($page = mysql_fetch_array($query))
            {
       //on compare
              if ( ...
    non c'est pas ce que tu fais
    a chaque fichier tu vas chercher le résultat suivant de la requete...

  6. #6
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 727
    Points
    10 727
    Par défaut
    Citation Envoyé par tryan Voir le message
    C'est ce que fais mon premier code, non ??

    La première boucle va chercher les dossiers puis la seconde va chercher les noms en BD..puis je compare.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
        //on va chercher les dossiers sur ftp
           while ($Fichier = readdir($dossierftp))
           {
       //on va chercher les dossiers en bd
            while($page = mysql_fetch_array($query))
            {
       //on compare
              if ( ...
    non c'est pas ce que tu fais
    a chaque fichier tu vas chercher les résultat requete...
    sauf qu'a parti du 2eme fichier ca rentre pu dans le while de la requete puisque t'a pris tout les résultat au tour de boucle précédant

  7. #7
    Membre du Club
    Inscrit en
    Septembre 2010
    Messages
    128
    Détails du profil
    Informations forums :
    Inscription : Septembre 2010
    Messages : 128
    Points : 51
    Points
    51
    Par défaut
    Bon et bien là je sèche complètement .. j'ai retourné le code dans tout les sens et mon résultat est toujours le même...
    Il y a un truc qui m'échappe et je ne sais pas ce que c'est !

    Quelle est la solution alors ?

  8. #8
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 727
    Points
    10 727
    Par défaut
    Citation Envoyé par tryan Voir le message
    Bon et bien là je sèche complètement .. j'ai retourné le code dans tout les sens et mon résultat est toujours le même...
    Il y a un truc qui m'échappe et je ne sais pas ce que c'est !

    Quelle est la solution alors ?

    2 solutions :

    1 - stocker les fichiers dans un array et faire un in_array a chaque tour de boucle de la requête
    2 - a chaque tour de boucle du répertoire faire un requête pour voir si le fichier existe

  9. #9
    Membre du Club
    Inscrit en
    Septembre 2010
    Messages
    128
    Détails du profil
    Informations forums :
    Inscription : Septembre 2010
    Messages : 128
    Points : 51
    Points
    51
    Par défaut
    Bon, je viens d'essayer je ne sais trop combien de fois et je n'y arrive toujours pas. Je dois mal m'y prendre et passer + de 2 jours la-dessus me saoule complètement !

    Je lâche l'affaire et merci pour les indications.

  10. #10
    Expert confirmé
    Avatar de Thes32
    Homme Profil pro
    Développeur PHP, .Net, T-SQL
    Inscrit en
    Décembre 2006
    Messages
    2 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Développeur PHP, .Net, T-SQL

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 379
    Points : 4 853
    Points
    4 853
    Par défaut
    salut,
    Peux tu tester avec ceci ?

    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
     
    $adresse = 'photo/';
    $dossierftp = opendir($adresse);
     
    $liste_dossier = array();
    while ( $fichier = readdir($dossierftp))
    {
        if ( ($fichier != ".") && ($fichier != "..") )
       $liste_dossier[] = $fichier;
    }
     //Fermeture du dossier.
    closedir($dossierftp);
     
    //on va chercher le nom des dossiers
    $query = mysql_query("SELECT dossier_image FROM MATABLE");
     
    //on va chercher les dossiers sur ftp
    while( $page = mysql_fetch_array( $query ))
    {
      if (  array_search($page['dossier_image'], $liste_dossier ) !== FALSE)
      {
         echo 'Dossier à effacer : '.$page['dossier_image'].'<br/>';
      }
    }

  11. #11
    Membre du Club
    Inscrit en
    Septembre 2010
    Messages
    128
    Détails du profil
    Informations forums :
    Inscription : Septembre 2010
    Messages : 128
    Points : 51
    Points
    51
    Par défaut
    Salut,

    Bien tenté mais non. Le code affiche l'ensemble des dossiers du répertoire "photo".

    Ceci dit, j'ai la réponse à mon soucis .. ce n'est plus la peine de chercher .

    Merci de vos tentatives

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

Discussions similaires

  1. Déplacer des dossiers sur un ftp
    Par aurelien36 dans le forum Langage
    Réponses: 1
    Dernier message: 05/11/2009, 07h52
  2. [FTP] Suppression automatique des fichiers sur FTP
    Par thomcat dans le forum Langage
    Réponses: 3
    Dernier message: 06/01/2009, 16h52
  3. Comment comparer des fichiers sur Windows?
    Par programmerPhil dans le forum Autres Logiciels
    Réponses: 9
    Dernier message: 22/02/2006, 20h47
  4. Réponses: 2
    Dernier message: 20/01/2006, 17h08
  5. Garder la mise en forme des dossiers sur un CD
    Par tibodoudou dans le forum Autres Logiciels
    Réponses: 2
    Dernier message: 19/12/2005, 16h42

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