Précédent   Forum des professionnels en informatique > PHP > Langage > Débuter
Débuter Forum d'entraide pour débuter en PHP. Avant de poster -> Cours PHP, FAQ PHP, Outils PHP, etc.
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 17/11/2011, 17h18   #1
Invité régulier
 
Pierre ANTOINE
Inscription : novembre 2009
Messages : 34
Détails du profil
Informations personnelles :
Nom : Pierre ANTOINE

Informations forums :
Inscription : novembre 2009
Messages : 34
Points : 9
Points : 9
Par défaut Boucle While qui ne s'arrete pas

Bonjour,

J'ai une boucle While qui boucle autant de fois qu'elle trouve de fichier dans un dossier.
Seulement, dans mon test, j'ai un fichier mais elle boucle plusieurs fois et du oup j'ai des erreurs.

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
 
//chmod ($dossier_en_cours, 0777);
if(@mkdir ($dossier_en_cours,0777,true)) { 
}
 
$dh = opendir($rep);
if ($dh) {
	/*-----------------------------------------*/
	// On parcoure chaque fichier du dossier
	/*-----------------------------------------*/
	while (($file = readdir($dh))) {
		//Test si le fichier est à exploiter ou pas
 
		if($file!="." && $file!=".." && $file!="archives")
		$chemin_origine="fichiers/".$file;
		$chemin_dest="fichiers/archives/".$nom_dossier_en_cours."/".$file;
		echo "Déplacement de $chemin_origine<br />";
		echo "Déplacement de $chemin_dest<br />";
		rename($chemin_origine,$chemin_dest);		
	}
	closedir($dh);
}
et voici les erreurs que j'ai en ligne :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
 
Traitement des fichiers....
Déplacement de fichiers/toto.zip
Déplacement de fichiers/archives/2011_11_17_17_08/toto.zip
Déplacement de fichiers/toto.zip
Déplacement de fichiers/archives/2011_11_17_17_08/archives
 
Warning: rename(fichiers/toto.zip,fichiers/archives/2011_11_17_17_08/archives) [function.rename]: No such file or directory in /home/wwwlogit/public_html/dev/templates/pays_de_gex/sitra/importdetail.php on line 1603
Déplacement de fichiers/toto.zip
Déplacement de fichiers/archives/2011_11_17_17_08/.
 
Warning: rename(fichiers/toto.zip,fichiers/archives/2011_11_17_17_08/.) [function.rename]: Device or resource busy in /home/wwwlogit/public_html/dev/templates/pays_de_gex/sitra/importdetail.php on line 1603
Déplacement de fichiers/toto.zip
Déplacement de fichiers/archives/2011_11_17_17_08/..
 
Warning: rename(fichiers/toto.zip,fichiers/archives/2011_11_17_17_08/..) [function.rename]: Device or resource busy in /home/wwwlogit/public_html/dev/templates/pays_de_gex/sitra/importdetail.php on line 1603
Je ne comprends vraiment pas ou si situe mon erreur, donc si quelqu'un pouvait me donner une piste, ça m'aidrait beaucoup. Merci
Pierrea4564 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/11/2011, 17h38   #2
Modérateur
 
Inscription : septembre 2010
Messages : 7 165
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 165
Points : 8 538
Points : 8 538
fait un scandir pour un FilesystemIterator plutôt
__________________
http://blog.stealth35.com/
stealth35 est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/11/2011, 08h57   #3
Membre confirmé
 
Homme Clément
Développeur informatique
Inscription : décembre 2006
Messages : 213
Détails du profil
Informations personnelles :
Nom : Homme Clément
Localisation : France

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : décembre 2006
Messages : 213
Points : 277
Points : 277
Dans ton code, je pense que tu as oublié des accolades autour du "if" dans la boucle. Je pense que tu voudrais faire cela plutôt :
Code :
1
2
3
4
5
6
7
8
 
if($file!="." && $file!=".." && $file!="archives") {
	$chemin_origine="fichiers/".$file;
	$chemin_dest="fichiers/archives/".$nom_dossier_en_cours."/".$file;
	echo "Déplacement de $chemin_origine<br />";
	echo "Déplacement de $chemin_dest<br />";
	rename($chemin_origine,$chemin_dest);
}
Tu trouveras des exemples qui ressemblent à ce que tu veux faire ici :
php.net : fonction readdir
Climoo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/11/2011, 08h59   #4
Invité régulier
 
Pierre ANTOINE
Inscription : novembre 2009
Messages : 34
Détails du profil
Informations personnelles :
Nom : Pierre ANTOINE

Informations forums :
Inscription : novembre 2009
Messages : 34
Points : 9
Points : 9
Merci Climoo, c'est effectivement beaucoup mieux comme ça.
Pierrea4564 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 13h48.


 
 
 
 
Partenaires

Hébergement Web