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 :

Comparaison entre fichiers et requête SQL [SQL-Server]


Sujet :

PHP & Base de données

  1. #1
    Membre éclairé
    Inscrit en
    Janvier 2006
    Messages
    250
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Janvier 2006
    Messages : 250
    Par défaut Comparaison entre fichiers et requête SQL
    Bonjour a tous,
    J'aimerai comparer des fichiers existants dans un dossier avec le résultat d'une requete MSSQL:
    Exemple :

    J'ai un dossier qui contient les photos des collaborateurs de mon entreprise en fonction d'un numéro de matricule (ID_unique).
    Dans une requete SQL je retourne tous les collaborateurs de mon entreprise avec leur nom prenom et matricule.
    Je voudrai comparer les résultats de ma requete avec le contenus du dossier "photo" si la photo de l'employer et existante (ba c'est bien ) sinon faire un uploade qui permet de l'uploader dans le dossier photos.

    Quelle technique est ce que je peut utiliser ... (Sans passer par une table temp si possible)

    Voici ce que j'ai déja réalisé :

    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
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    [...]
    <?php
     
    //Connexion au serveur MSSQL
    $mssql_connect = mssql_connect($Server_mssql, $User_mssql, $Pass_mssql)
    or die("Erreur de connexion au serveur : $myServer");
     
    //Connexion au serveur my_sql
    $sql_select = mssql_select_db($DB_mssql, $mssql_connect)
    or die("Erreur d'ouverture de la base de données : $myDB");
     
    //Options recherche : fonction contenue dans layout.inc.php
    FilterSearch();
     
    //Création de la requete en fonction de la recherche
    $query_pers ='SELECT PERS.NOM_ ,PERS.PRENOM_ , SAL.MATRICULE_ '
    	 . ' FROM  '.$Table_pers.' PERS , '.$Table_sal.' SAL '
    	 . ' WHERE  PERS.PERSONNE_ = SAL.PERSONNE_'
    	 . ' ORDER BY SAL.MATRICULE_ ASC;';
     
    //Execution requetes
    $result_pers = mssql_query($query_pers);
    $numRows_pers = mssql_num_rows($result_pers);
     
    ?>
    <Table align="center" border="1" bgcolor="#B2BDD8" cellpadding="10">
    			<TR BGCOLOR="#f5f5dc" >
    				<TH>Nom</TH>
    				<TH>Prénom</TH>
    				<TH>Matricule</TH>
    				<TH>Fichier</TH>
    			</TR>
    <?php
    while($row_pers = mssql_fetch_array($result_pers))
    	{
    			$Nom    = $row_pers['NOM_'];
    			$Prenom = $row_pers['PRENOM_'];
    			$Matricule = $row_pers['MATRICULE_'];
     
     
    			echo("<TR>
    					  <TD>".$Nom."</TD>\n
    				      <TD>".$Prenom."</TD>\r\n
    				      <TD>".$Matricule."</TD>\r\n");
    	}
    	echo"</table>";
    ?>
    <?php
    //Liste des fichiers présents dans le dossier photos
    $folder = "/home/httpd/mount/Badges";
    $dossier = opendir($folder);
    while ($Fichier = readdir($dossier)) {
      if ($Fichier != "." && $Fichier != "..") 
      {
        echo "<TD>".$Fichier."</TD>";
      }
    }
    echo"</table>";
    closedir($dossier);
    [...]
    Merci pour votre aide et vos remarques ...

  2. #2
    Membre Expert
    Inscrit en
    Janvier 2005
    Messages
    2 291
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 291
    Par défaut
    Bonjour,

    Je ne suis pas sur d'avoir compris exactement ton probleme! Les photos des employés sont identifiées comment? Leur nom est le numéro de matricule de l'employé?

    Ensuite dans ton code je vois que tu fais une table dans laquelle tu affiches tous les employés un par un mais tu ne remplis pas la colonne de la photo! Si les photos sont bien identifiées par le numéro de matricule, tu peux le faire directement dans ta boucle :
    Tu regardes avec file_exists() si la photo avec le numéro de matricule existe, si oui, tu l'affiches, si non tu mets un champ qui va te permettre de l'uploader.

    J'espère ne pas être tombé trop a coté de ton probleme, bon courage!

  3. #3
    Membre éclairé
    Inscrit en
    Janvier 2006
    Messages
    250
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Janvier 2006
    Messages : 250
    Par défaut
    Re,
    Merci de vous pencher sur mon interogation un prévu à été de mise alors je me suis absenté une petite heure ...
    donc en effet d'une part j'ai un dossier "photos" :
    qui contient :
    1.jpg
    2.jpg
    ....
    10000.jpg
    (Ceci sont les photos des employés)
    Le numéro et le numéro de matricule de l'employé.

    d'autre part :
    J'ai une base de donnée qui construit une table qui contient
    Nom _ Prenom _ Matricule
    J'espere que je sui un peu plus clair dans mon fontionnement...
    Ce que j'aimerai réalisée c'est pour chaque items de ma base vérifier si la photos de la personne est bien présente ou non .

  4. #4
    Membre Expert
    Inscrit en
    Janvier 2005
    Messages
    2 291
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 291
    Par défaut
    et bien dans ton code, tu as une boucle while qui se charge de récupérer le nom, le prénom et le numéro de matricule des employés. Dans cette meme boucle il faut que tu utilises file_exists() comme je te l'ai indiqué pour savoir si la photo est ou non présente (en constuisant le chemin avec le numéro de matricule extrait de la base de données).

    Après tu veux peut etre faire ca dans un script completement différent?

  5. #5
    Membre éclairé
    Inscrit en
    Janvier 2006
    Messages
    250
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Janvier 2006
    Messages : 250
    Par défaut
    En effet cela fontionne , voici le bout de code effectif :
    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
    while($row_pers = mssql_fetch_array($result_pers))
    	{
    			$Nom    = $row_pers['NOM_'];
    			$Prenom = $row_pers['PRENOM_'];
    			$Matricule = $row_pers['MATRICULE_'];
     
     
    			echo("<TR>
    					  <TD>".$Nom."</TD>\n
    				      <TD>".$Prenom."</TD>\r\n
    				      <TD>".$Matricule."</TD>\r\n");
    			$folder = "/home/httpd/mount/Badges/$Matricule.jpg";
    			if (file_exists($folder)) 
    			 {echo ("<TD>Ok</TD>");
    			 }
    			else
    			 {echo ("<TD>Non</TD>");
    			 }
    	}
    	echo"</table>";
    Je trouve ca un peu lourd mais ca tourne .

    Tu dit :
    Après tu veux peut etre faire ca dans un script completement différent?
    Mais dans quel type de script?

  6. #6
    Membre Expert
    Inscrit en
    Janvier 2005
    Messages
    2 291
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 291
    Par défaut
    Citation Envoyé par javaboy
    Je trouve ca un peu lourd mais ca tourne .
    Je ne trouve pas ca lourd. L'autre solution aurait été de lire tous les fichiers de ton répertoire avec un readdir en stockant chaque nom dans un tableau avec une boucle while qui aurait ajouter chaque nom a ton tableau et ensuite de vérifier la présence du nom dans le tableau.
    Je ne suis pas sur que ca aurait été plus léger de faire ca.

    Par contre, ce que tu peux faire c'est mettre un champ dans ta base qui indique si la photo est présente ou non (si jamais ces fichiers ne risquent pas de disparaitre) comme ca tu le fais une fois pour toutes, et trouver ensuite les employés sans photo est tres simple.

    Citation Envoyé par javaboy
    Tu dit :
    Mais dans quel type de script?
    Nan ce que je voulais dire c'est que je n'étais pas sur d'avoir compris ton probleme. J'imaginais que tu voulais peut etre faire un nouveau script (pas celui de l'affichage des employés) qui allait juste donner par exemple la liste des employés sans photo. Mais le fonctionnement serait le meme, la seule différence c'est que tu ne ferais des echo que si ton fichier n'existe pas.

  7. #7
    Membre éclairé
    Inscrit en
    Janvier 2006
    Messages
    250
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Janvier 2006
    Messages : 250
    Par défaut
    Ok merci pour tes reponse simple et rapide,
    Je ne peut pas ecrire dans la base car j'ai un acces lecture seulement j'exploite les bases de données réalisées pour la gestion du temps des employés de l'entreprise...

    Merci pour tout ,

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

Discussions similaires

  1. [Fichier csv] Requête SQL
    Par smutmutant2003 dans le forum Outils
    Réponses: 6
    Dernier message: 08/07/2013, 15h26
  2. [Batch] Recherche de fichiers suite à requête SQL
    Par yellowsub122 dans le forum Scripts/Batch
    Réponses: 3
    Dernier message: 29/07/2009, 11h45
  3. load de fichier de requêtes sql
    Par Saoua83 dans le forum Requêtes
    Réponses: 2
    Dernier message: 26/06/2009, 08h26
  4. fichier texte + requête SQL
    Par franfr57 dans le forum Général Java
    Réponses: 8
    Dernier message: 01/07/2008, 12h01
  5. exécuter un fichier avec requêtes SQL
    Par nozostan dans le forum SQL
    Réponses: 2
    Dernier message: 07/12/2007, 15h40

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