[RESOLU] Mon foreach ne marche pas...

Eléphant du PHP | 61 Messages

01 nov. 2014, 19:59

Oui, merci mais je me remettrais sur mon code lundi...

Eléphant du PHP | 61 Messages

03 nov. 2014, 12:47

Bonjour,

La nuit a été prolifique car j'ai trouvé la solution que j'ai griffoné sur un bout de papier...et la mon code final marche...tout les fichiers en vrac se range dans le bon dossier...

A part un message d'erreur : warning rename:....

Voici mon code :
public function sortImage()
	{
	foreach($this->nameDos as $key3=>$nameDosExplode){
	foreach($this->images as $keyImage=>$nameFile){
	if(strstr($nameFile,$nameDosExplode)){
	rename(IMAGE_DIR_PATH.$nameFile,IMAGE_DIR_PATH.$nameDosExplode.'/'.$nameFile);
	}
	else{
	echo 'erreur';
	}
Je ne comprends pas d'ou vient cette erreur...

ViPHP
xTG
ViPHP | 7331 Messages

03 nov. 2014, 14:22

A part un message d'erreur : warning rename:....
On peut difficilement inventer la suite. :lol:

Eléphant du PHP | 61 Messages

03 nov. 2014, 15:50

Warning: rename(C:/wamp/www/imageManager/images/avion,C:/wamp/www/imageManager/images/avion/avion): in C:\wamp\www\imageManager\class\ImageManager.php on line 67

ViPHP
xTG
ViPHP | 7331 Messages

03 nov. 2014, 17:31

Tu tentes de déplacer un dossier pour le placer... Dans l'un de ses sous-dossier... :wink:

Utilises la fonction is_dir() pour ne pas traiter les dossiers dans ta boucle.

Eléphant du PHP | 61 Messages

04 nov. 2014, 10:42

Au final j'ai toujours le même probléme...
	public function sortImage()
	{
		foreach($this->_nameDos as $keyDos=>$nameDosExplode){
		foreach($this->_images as $keyImage=>$nameImage){
		
			if(strstr($nameImage,$nameDosExplode) AND is_dir(IMAGE_DIR_PATH.$nameDosExplode))
			{
				rename(IMAGE_DIR_PATH.$nameImage,IMAGE_DIR_PATH.$nameDosExplode.'/'.$nameImage);
			}
			else
			{
				echo 'erreur';
			}
		}
		}
	}
}

ViPHP
xTG
ViPHP | 7331 Messages

04 nov. 2014, 14:10

Tu ne renommes maintenant que .... les répertoires. :D

Eléphant du PHP | 61 Messages

04 nov. 2014, 16:18

Alors la je sèche je ne vois pas du tout comment et ou utiliser se is_dir...

ViPHP
xTG
ViPHP | 7331 Messages

04 nov. 2014, 18:19

La fonction is_dir retourne true (vrai) lorsque le chemin passé en paramètre est un répertoire.

Eléphant du PHP | 61 Messages

05 nov. 2014, 10:22

Oui je sais que je dois utiliser is_dir pour verifier si mon fichier est un dossier (donc a utiliser avec if) mais ou placer cette vérification dans mon bout de code ?

ViPHP
xTG
ViPHP | 7331 Messages

05 nov. 2014, 11:58

Il est au bon endroit.
Sauf que tu testes l'inverse de ce que tu veux.
Relis bien ton if.

Eléphant du PHP | 61 Messages

05 nov. 2014, 17:07

C'est bon !

Voici le code final:
public function sortImage()
	{
		foreach($this->_nameDos as $keyDos=>$nameDosExplode){
		foreach($this->_images as $keyImage=>$nameImage){
			
			if(strstr($nameImage,$nameDosExplode) && !is_dir(IMAGE_DIR_PATH.$nameImage))
			{
				$rename=rename(IMAGE_DIR_PATH.$nameImage,IMAGE_DIR_PATH.$nameDosExplode.'/'.$nameImage);
			}
		}
		}
			if($rename==true)
			{
				echo 'Tous les fichiers ont été rangés et triés dans leurs dossiers respectifs.';
			}
			else
			{
				echo 'Erreur, les fichiers n\'ont pas pu être rangés.';
			}	
	}