[RESOLU] Mon foreach ne marche pas...

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : [RESOLU] Mon foreach ne marche pas...

Re: Mon foreach ne marche pas...

par Incognito » 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.';
			}	
	}

Re: Mon foreach ne marche pas...

par xTG » 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.

Re: Mon foreach ne marche pas...

par Incognito » 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 ?

Re: Mon foreach ne marche pas...

par xTG » 04 nov. 2014, 18:19

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

Re: Mon foreach ne marche pas...

par Incognito » 04 nov. 2014, 16:18

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

Re: Mon foreach ne marche pas...

par xTG » 04 nov. 2014, 14:10

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

Re: Mon foreach ne marche pas...

par Incognito » 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';
			}
		}
		}
	}
}

Re: Mon foreach ne marche pas...

par xTG » 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.

Re: Mon foreach ne marche pas...

par Incognito » 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

Re: Mon foreach ne marche pas...

par xTG » 03 nov. 2014, 14:22

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

Re: Mon foreach ne marche pas...

par Incognito » 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...

Re: Mon foreach ne marche pas...

par Incognito » 01 nov. 2014, 19:59

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

Re: Mon foreach ne marche pas...

par xTG » 01 nov. 2014, 10:52

A priori tu as toutes les variables pour le faire :
rename($cheminFichier, $nouveauDossier . '/' . $nomFichier);

Re: Mon foreach ne marche pas...

par Incognito » 01 nov. 2014, 10:33

Mes fichiers auront toujours la même syntaxe nom_du_fichier-numéro.extension .

Oui je me sers de explode() pour nommer mes noms de dossiers par rapport aux noms de fichiers... exemple avion-002.jpg que je transforme en dossier avion...sur ce point la je n'ai aucun problème.

Mes dossiers se créé très bien avec le noms respectifs...Mais pour la suite je ne vois pas quel structure utilisé pour faire correspondre les dossiers et les fichiers pour pouvoir ensuite insérer (via rename() ) les bon fichiers dans les bon dossiers. exemple : avion-002.jpg dans le dossier avion .

Re: Mon foreach ne marche pas...

par xTG » 31 oct. 2014, 20:30

Tes noms de fichier ont toujours ce même motif ?
type-numero.ext

Si c'est le cas tu peux récupérer facilement le nom du dossier en l'extrayant du nom du fichier :
$tmp = explode('-', $nomFichier);
$nomDossier = $tmp[0]; // ce qui se trouve avant le caractère '-'