Précédent   Forum des professionnels en informatique > PHP > Langage > Fichiers
Fichiers Forum d'entraide sur les fichiers avec PHP. Avant de poster -> FAQ fichiers et Sources fichiers
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 10/07/2007, 20h32   #1
Candidat au titre de Membre du Club
 
Inscription : juillet 2007
Messages : 75
Détails du profil
Informations forums :
Inscription : juillet 2007
Messages : 75
Points : 13
Points : 13
Par défaut [CSV] Création dossier sous dossier et copie image

Bonjour a tous

J'utilise au boulo phpwebgalery et j'ai à integrer dans la phototéqué envirron 1500 photo de produits que je doi classer par leur famille sous famille et sous sous famille.

J'aimerai arriver a ranger mes photos dans des dossier sous dossier ... avec la base de donée que j'ai

la base de donée est constitué comme ceci

REF DESIGNATION FAMILLE SOUSFAMILLE SOUSSOUSFAMILLE

Et j'ai toute les photos des référence qui sont placé dans un dossier et chaque photo comporte le nom suivant:

ref.jpg

quelqun aurai t'il une solution a mon probléme j'aimerai arriver a trouver un script qui puisse me ranger mes photos et créer mes dossier en conséquence car je risque d'avoir a refaire sa assey régulierement et je n'ai pas trop envie de passer mon temps au travail a ranger des photos dans des dossiers

D'autant plus que je risque de faire des erreur.

Merci
mrsoyer est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/07/2007, 10h12   #2
Membre confirmé
 
Avatar de DavidDeTroyes
 
Inscription : février 2005
Messages : 305
Détails du profil
Informations personnelles :
Âge : 35
Localisation : France, Aube (Champagne Ardenne)

Informations forums :
Inscription : février 2005
Messages : 305
Points : 271
Points : 271
Envoyer un message via MSN à DavidDeTroyes


Ca doit être moi, vu que je suis pas bien réveillé, mais j'ai rien compris...

Tu pourrais reformuler ta demande (en relisant tes phrases et en retirant les fautes) ?

Merci
__________________
"Les cons ca ose tout, c'est même à ca qu'on les reconnait" M. AUDIARD
"L'intelligence, on croit toujours en avoir assez, vu que c'est avec ça qu'on juge" COLUCHE

Spidercochon ! Spidercochon !
Il peut marcher au plafond.
Est-ce qu'il peut tisser une toile ?
Bien sûr que non c'est un cochon
Prends garde Spidercochon est là...
DavidDeTroyes est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/07/2007, 10h58   #3
Candidat au titre de Membre du Club
 
Inscription : juillet 2007
Messages : 75
Détails du profil
Informations forums :
Inscription : juillet 2007
Messages : 75
Points : 13
Points : 13
heuu alors je vais essayé de mieux expliquer

d'un coté j'ai une base de donée sous access ou j'ai fait une requette afin d'optenir une table de doute nos référence comme ceci

ref / famille / sousfamille / soussousfamille

991202 / articledemenage / brosserie / mancheabalai
991205 / articledemenage / brosserie / balai
991232 / articledemenage / produitentretien / liquidevaiselle
080360 / hygieneetbeaute / hygieneetsoins / soinsdesmain
...
...

d'un autre j'ai un dossier avec toute les photos de chaque référence, les photo se nomme

ref.jpg

991202.jpg
991205.jpg
991232.jpg
080360.jpg
...


Et avec ceci je voudré arrivé a faire ou trouver un script qui me permétrait
de ranger sa dans des dossier et sous dossier

DossierFamille
--------------DossiersousFamille
-------------------------Dossiersousousfamille
--------------------------------------ref.jpg

articledemenage
--------------brosserie
-------------------------mancheabalai
--------------------------------------991202.jpg
-------------------------balai
--------------------------------------991205.jpg
--------------produitentretien
-------------------------liquidevaiselle
--------------------------------------991232.jpg
hygieneetbeaute
--------------hygieneetsoins
-------------------------soinsdesmain
--------------------------------------080360.jpg

j'espére etre arriver a bien m'expliquer
mrsoyer est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/07/2007, 11h06   #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
C'est assez clair je trouve, maintenant vu que tu as bien expliqué le probleme je pense que tu as fait 50% du travail déjà!

Apparemment tu vas faire un script qui fait une requete sur ta base pour récupérer toutes les images, et pour chaque ligne du résultat tu vas faire plusieurs étapes:
1/ je regarde si le dossier famille existe, si non je le crée
2/ je regarde si dans le dossier famille le dossier sous-famille existe si non je le cree
3/ je regarde si dans le dossier sous-famille le dossier sous-sous-famille existe sinon je le crée
4/ Dans ce dernier dossier je regarde si ma photo existe si non je la copie

fonctions utiles : opendir file_exists() copy()
koopajah est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/07/2007, 11h09   #5
Membre confirmé
 
Avatar de DavidDeTroyes
 
Inscription : février 2005
Messages : 305
Détails du profil
Informations personnelles :
Âge : 35
Localisation : France, Aube (Champagne Ardenne)

Informations forums :
Inscription : février 2005
Messages : 305
Points : 271
Points : 271
Envoyer un message via MSN à DavidDeTroyes
Code :
1
2
3
4
5
6
7
8
$dossier = opendir($chemin);
while ($fichier = readdir($dossier)) 
{
if (is_file($chemin . $fichier) 
{
mysql_query("UPDATE Table SET Image = '" . $fichier . "' WHERE Ref = '" . substr($fichier, 0, strlen($fichier) - 4) . "');
}
}
EDIT : ah tient j'avais pas pensé comme toi, koopajah. Moi, je considère comme les fichiers sont dans un dossier et qu'ils bougent plus et que quand il appelle un enregistrement de sa base il pointe vers le bon dossier. Mais chacun sa méthode en fait
__________________
"Les cons ca ose tout, c'est même à ca qu'on les reconnait" M. AUDIARD
"L'intelligence, on croit toujours en avoir assez, vu que c'est avec ça qu'on juge" COLUCHE

Spidercochon ! Spidercochon !
Il peut marcher au plafond.
Est-ce qu'il peut tisser une toile ?
Bien sûr que non c'est un cochon
Prends garde Spidercochon est là...
DavidDeTroyes est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/07/2007, 11h16   #6
Candidat au titre de Membre du Club
 
Inscription : juillet 2007
Messages : 75
Détails du profil
Informations forums :
Inscription : juillet 2007
Messages : 75
Points : 13
Points : 13
merci a vous 2 je vais tenter les 2 métode cet aprem je revien pour vous dire ce qui en est
mrsoyer est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/07/2007, 11h28   #7
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 DavidDeTroyes
EDIT : ah tient j'avais pas pensé comme toi, koopajah. Moi, je considère comme les fichiers sont dans un dossier et qu'ils bougent plus et que quand il appelle un enregistrement de sa base il pointe vers le bon dossier. Mais chacun sa méthode en fait
Je dirai que c'est la deuxieme etape : une fois que les fichiers ont été déplacés, changer la base pour qu'elle soit a jour (on peut le faire en meme temps et c'est surement bien plus logique d'ailleurs)
Mais ca ne répond pas à son probleme actuel qui est que tous les fichiers sont au meme endroit et qu'il faut les déplacer une première fois.
Donc en gros, il faut mixer les deux solutions je pense pour obtenir un dossier de photos rangées correctement ET une base de données qui reflete ce rangement (mais en meme temps les familles, sous-familles etc servent justement a ca)
koopajah est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/07/2007, 11h37   #8
Membre confirmé
 
Avatar de DavidDeTroyes
 
Inscription : février 2005
Messages : 305
Détails du profil
Informations personnelles :
Âge : 35
Localisation : France, Aube (Champagne Ardenne)

Informations forums :
Inscription : février 2005
Messages : 305
Points : 271
Points : 271
Envoyer un message via MSN à DavidDeTroyes
Oui mais comme il a déjà rangé ses photos dans un dossier, j'ai tout de suite passé à l'étape 2
__________________
"Les cons ca ose tout, c'est même à ca qu'on les reconnait" M. AUDIARD
"L'intelligence, on croit toujours en avoir assez, vu que c'est avec ça qu'on juge" COLUCHE

Spidercochon ! Spidercochon !
Il peut marcher au plafond.
Est-ce qu'il peut tisser une toile ?
Bien sûr que non c'est un cochon
Prends garde Spidercochon est là...
DavidDeTroyes est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/07/2007, 12h20   #9
Candidat au titre de Membre du Club
 
Inscription : juillet 2007
Messages : 75
Détails du profil
Informations forums :
Inscription : juillet 2007
Messages : 75
Points : 13
Points : 13
je n'y arrive pas, j'aime pas trop demandé de trop men dire sur les forum

mais avec mon niveau en php

Mes connaissance en php pour l'instant se limite a avoir installer oscommerce l'avoir un peu bidouiller et installer des modules

et pareil pour phpwebgalery

a par sa je suis un peu un newb qui commence à s'interresser au php
mrsoyer est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/07/2007, 16h34   #10
Candidat au titre de Membre du Club
 
Inscription : juillet 2007
Messages : 75
Détails du profil
Informations forums :
Inscription : juillet 2007
Messages : 75
Points : 13
Points : 13
C'et bon j'ai trouvé une solution, parcontre sa se passe sous os x la voici


- créer un export csv de ta requête avec la virgule comme séparateur de champs. Si la première ligne de l'export contient les noms de champs, supprimer la première ligne.
- copier/coller le code dans un fichier que tu sauves sous le nom copyphotos.py

CODE
import os.path
import shutil

#chemin vers le fichier csv
csvPath = "/Users/audionuma/Documents/copyphotos/short_lines.csv"

#chemin vers le répertoire de destination
destDir = "/Users/audionuma/Documents/copyphotos/destination/"

#chemin vers le réperoire contenant les photos non triées
sourceDir = "/Users/audionuma/Documents/copyphotos/source/"

compteur = 0

for lines in open(csvPath):
all = lines.strip().split(",")
refArt = all[0]
pathToDestDir = os.path.join(destDir,all[1])
pathToDestDir = os.path.join(pathToDestDir,all[2])
pathToDestDir = os.path.join(pathToDestDir,all[3])

filePathToDestDir = os.path.join(pathToDestDir,all[0]+".jpg")
sourcePath = os.path.join(sourceDir,all[0]+".jpg")
if os.path.isdir(pathToDestDir):
shutil.copy(sourcePath,filePathToDestDir)
else:
os.makedirs(pathToDestDir, mode=0777)
shutil.copy(sourcePath,filePathToDestDir)

compteur = compteur + 1

print "Done"
print str(compteur) + " photos copiee(s)"


- paramétrer les chemins csvPath, destDir, sourceDir
- dans le terminal, exécuter
> python /chemin/vers/copyphotos.py
mrsoyer 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 09h34.


 
 
 
 
Partenaires

Hébergement Web