Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD > PHP & SQL-Server
PHP & SQL-Server Forum d'entraide sur SQL-Server avec PHP. Avant de poster -> FAQ SQL-Server
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 04/07/2007, 10h44   #1
Membre du Club
 
Inscription : janvier 2006
Messages : 250
Détails du profil
Informations personnelles :
Âge : 28

Informations forums :
Inscription : janvier 2006
Messages : 250
Points : 64
Points : 64
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 :
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 ...
javaboy est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/07/2007, 10h53   #2
Membre Expert
 
Inscription : janvier 2005
Messages : 2 288
Détails du profil
Informations forums :
Inscription : janvier 2005
Messages : 2 288
Points : 2 287
Points : 2 287
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!
koopajah est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/07/2007, 11h41   #3
Membre du Club
 
Inscription : janvier 2006
Messages : 250
Détails du profil
Informations personnelles :
Âge : 28

Informations forums :
Inscription : janvier 2006
Messages : 250
Points : 64
Points : 64
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 .
javaboy est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/07/2007, 11h43   #4
Membre Expert
 
Inscription : janvier 2005
Messages : 2 288
Détails du profil
Informations forums :
Inscription : janvier 2005
Messages : 2 288
Points : 2 287
Points : 2 287
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?
koopajah est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/07/2007, 11h58   #5
Membre du Club
 
Inscription : janvier 2006
Messages : 250
Détails du profil
Informations personnelles :
Âge : 28

Informations forums :
Inscription : janvier 2006
Messages : 250
Points : 64
Points : 64
En effet cela fontionne , voici le bout de code effectif :
Code :
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 :
Citation:
Après tu veux peut etre faire ca dans un script completement différent?
Mais dans quel type de script?
javaboy est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/07/2007, 12h13   #6
Membre Expert
 
Inscription : janvier 2005
Messages : 2 288
Détails du profil
Informations forums :
Inscription : janvier 2005
Messages : 2 288
Points : 2 287
Points : 2 287
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.
koopajah est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/07/2007, 12h16   #7
Membre du Club
 
Inscription : janvier 2006
Messages : 250
Détails du profil
Informations personnelles :
Âge : 28

Informations forums :
Inscription : janvier 2006
Messages : 250
Points : 64
Points : 64
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 ,
javaboy est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 21h18.


 
 
 
 
Partenaires

Hébergement Web