Comparer des dossiers sur ftp et enregistrement en BD ?

Discussion dans 'Développement d'un site Web ou d'une appli mobile' créé par tryan, 16 Octobre 2010.

Tags:
  1. tryan
    tryan WRInaute passionné
    Inscrit:
    20 Février 2005
    Messages:
    2 239
    J'aime reçus:
    0
    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:
    <?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 ?

    Merci
     
  2. halbo
    halbo Nouveau WRInaute
    Inscrit:
    18 Août 2010
    Messages:
    27
    J'aime reçus:
    0
    Bonjour,

    Je pense qu'il faut inverser tes deux boucles.
    D'abord le while sur tes dossiers. Pour chaque dossier, tu vérifies s'il existe dans la base. Si non, tu l'affiches.

    A+
    Alain
     
  3. tryan
    tryan WRInaute passionné
    Inscrit:
    20 Février 2005
    Messages:
    2 239
    J'aime reçus:
    0
    Salut halbo,

    En inversant les boucles, je n'ai plus rien du tout ... je ne pige pas!
     
  4. halbo
    halbo Nouveau WRInaute
    Inscrit:
    18 Août 2010
    Messages:
    27
    J'aime reçus:
    0
    Bonjour,

    Tu peux remettre dans le forum le code après inversion des boucles ?

    A+
    Alain
     
  5. tryan
    tryan WRInaute passionné
    Inscrit:
    20 Février 2005
    Messages:
    2 239
    J'aime reçus:
    0
    Salut,

    Code:
    <?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/>';
          }
       }
    }
    closedir($dossierftp); //Fermeture du dossier.
    ?>
     
  6. halbo
    halbo Nouveau WRInaute
    Inscrit:
    18 Août 2010
    Messages:
    27
    J'aime reçus:
    0
    Hello,

    Ajoute un peu de code pour débugger et voir ce qui ne va pas.
    Par exemple, avant le "if", affiche les variables :

    Code:
    echo $Fichier;
    echo $page['dossier_image']
    
    ou encore var_dump $page; pour afficher tout le tableau.

    Complète aussi ta boucle if avec un else et ajoute une phrase qui s'affiche quand la condition du if n'est pas réalisée. Par exemple "Le fichier existe".

    A+
    Alain
     
  7. tryan
    tryan WRInaute passionné
    Inscrit:
    20 Février 2005
    Messages:
    2 239
    J'aime reçus:
    0
    Dans le code juste au dessus et juste avant le "if", un "echo $page['dossier_image']" est ok, par contre un "echo $Fichier;" n'affiche rien.
     
  8. halbo
    halbo Nouveau WRInaute
    Inscrit:
    18 Août 2010
    Messages:
    27
    J'aime reçus:
    0
    Ok, donc il faut sans doute revoir ta variable $adresse.
    Par exemple, essaye avec une adresse complète depuis la racine de ton hébergement.
    Un truc du genre /var/www/html/d123456/htdocs/photo/
    A voir selon ton hébergeur.

    A+
    Alain
     
  9. tryan
    tryan WRInaute passionné
    Inscrit:
    20 Février 2005
    Messages:
    2 239
    J'aime reçus:
    0
    Je te remercie de me donner réponse :).

    Je viens d'essayer avec le chemin absolu et ça ne change rien. A partir du moment ou les boucles sont imbriquées, ça ne fonctionne pas!
    Par contre, l'une au dessus de l'autre m'affiche tout correctement mais séparément .. j'y pige plus rien.
     
  10. halbo
    halbo Nouveau WRInaute
    Inscrit:
    18 Août 2010
    Messages:
    27
    J'aime reçus:
    0
    Gasp, bizarre effectivement.
    Tu as essayé avec un "else", juste pour voir si le script entre dans cette boucle ou pas ?

    A+
    Alain
     
  11. tryan
    tryan WRInaute passionné
    Inscrit:
    20 Février 2005
    Messages:
    2 239
    J'aime reçus:
    0
    Si je fais :
    Code:
    <?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:
    <?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 8O !

    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.
     
  12. halbo
    halbo Nouveau WRInaute
    Inscrit:
    18 Août 2010
    Messages:
    27
    J'aime reçus:
    0
    Trop bizarre ;-)

    Et en remplaçant les boucles while par des boucles foreach ?

    A+
    Alain
     
Chargement...
Similar Threads - Comparer dossiers ftp Forum Date
Comparer un array avec plusieurs valeurs Développement d'un site Web ou d'une appli mobile 19 Novembre 2021
Comparer le nombre de visiteur qui viennent de Google.fr et Google.com Débuter en référencement 2 Février 2017
Comment comparer les offres de référencement? Débuter en référencement 29 Janvier 2015
Extraire un fichier robots.txt et comparer le résultat Développement d'un site Web ou d'une appli mobile 12 Juillet 2014
Est-il légal de se comparer à ses concurrents en leur faisant sa la mauvaise pub ? Droit du web (juridique, fiscalité...) 30 Mai 2013
Se comparer avec un concurrent ? Droit du web (juridique, fiscalité...) 27 Avril 2013
Quels outils pour comparer le référencement entre deux sites ? Débuter en référencement 25 Avril 2013
Comparer Pages vues/Entrées google Google Analytics 15 Octobre 2012
Comment se calcule le CPC. Comparer avec la concurrence. AdWords 10 Juin 2012
Tester, comparer les performances d'un VPS, VDS, cloud et dédié Administration d'un site Web 21 Juin 2011