Page 1 sur 2

Mon foreach ne marche pas...

Posté : 31 oct. 2014, 12:26
par Incognito
Bonjour,

voici mon code :
public function sortImage()
	{
		foreach($this->images as $key=>$valeur){
		$nameFile=$this->images[$key];
		$valeurs = explode('.',$nameFile);
		$nameDos = $valeurs[0];
		$valeurs = explode('-',$nameDos);
		$nameDos = $valeurs[0];
		}
		?>
	<pre>
	<?php print_r($nameDos);?>
	</pre>
	<?php
Le probléme est le suivant...: le print me retourne que la derniére valeur du tableau...ALORS que je voudrais toutes les entrées du tableau.

Si quelqu'un peut m'aider d'avance merci...

Cordialement.

Re: Mon foreach ne marche pas...

Posté : 31 oct. 2014, 12:35
par xTG
Il faut gérer un tableau :
$monTableau = array();

foreach($unTruc as $valeur)
{
   $monTableau[] = $valeur; // on insère $valeur dans monTableau
}
var_dump($monTableau); // affichera bien un array contenant toutes les valeurs

Re: Mon foreach ne marche pas...

Posté : 31 oct. 2014, 12:39
par toytoy

public function sortImage()
        {
                foreach($this->images as $key=>$valeur){
                   $nameFile=$this->images[$key];
                   $valeurs = explode('.',$nameFile);
                   $nameDos = $valeurs[0];
                   $valeurs = explode('-',$nameDos);
                   $nameDos = $valeurs[0];                 //Ici tu écrases la dernière valeurs à chaque fois, il faut que tu place $valeurs[0] dans une nouvelle ligne de ton tableau
                }
                ?>
        <pre>
        <?php print_r($nameDos);?>
        </pre>
        <?php


Re: Mon foreach ne marche pas...

Posté : 31 oct. 2014, 12:45
par Incognito
D'accord j'ai bien compris mon probléme mais je n'arrive pas a le résoudre...

Re: Mon foreach ne marche pas...

Posté : 31 oct. 2014, 13:54
par xTG
As-tu compris mon exemple ?

Re: Mon foreach ne marche pas...

Posté : 31 oct. 2014, 14:13
par toytoy

public function sortImage()
        {
                $tab = array();
                foreach($this->images as $key=>$valeur){
                   $nameFile=$this->images[$key];
                   $valeurs = explode('.',$nameFile);
                   $nameDos = $valeurs[0];
                   $valeurs = explode('-',$nameDos);
                   $tab[] = $valeurs[0];                 //la valeur que tu récupère de ton traitement, tu la place dans 
                                                                  //une nouvelle ligne d'un tableau, ainsi tu conserves toutes tes
                                                                  //valeurs que tu afficheras par la suite, ( avec print_r($tab) ici )
                }
                ?>
        <pre>
        <?php print_r($tab);?>
        </pre>
        <?php


Re: Mon foreach ne marche pas...

Posté : 31 oct. 2014, 16:44
par Incognito
C'est bon j'ai compris et corriger mon erreur, merci pour votre aide... j'ai un second problème...

Je dois trier les images en vrac dans le dossier dans des sous dossiers correspondant exemple : voiture-001.jpg dans le dossier voiture...

J'arrive a créer les dossier correspondants aux images via php mais comment insérer les images dans les bon dossier ?

Cordialement ...

Re: Mon foreach ne marche pas...

Posté : 31 oct. 2014, 17:00
par xTG

Re: Mon foreach ne marche pas...

Posté : 31 oct. 2014, 18:17
par Incognito
Merci pour l'info....car j'utilisé (par habitude) move_uploaded_file qui s'utilisait que lors de téléchargement de fichier...Désormais je vais tester la foction rename()...

Merci ! :D

Re: Mon foreach ne marche pas...

Posté : 31 oct. 2014, 19:10
par Incognito
La fonction rename() est la bonne...merci !

Mais j'ai un nouveau probléme je ne vois pas quelle structure utilisé pour faire correspondre un fichier a un dossier...

Par exemple, je ne veux pas que moto-002.jpg aille dans le fichier voiture mais je veux qu'il aille dans le fichier moto...

En gros mon appli permet de ranger des fichiers jpg dans des dossiers.. le code php créer des dossier correspondant aux images...

Re: Mon foreach ne marche pas...

Posté : 31 oct. 2014, 19:21
par xTG
As-tu une arborescence de dossier connue à l'avance ?

Re: Mon foreach ne marche pas...

Posté : 31 oct. 2014, 20:03
par Incognito
Voila mon arborescence :

Dossier Images----->avion-001.jpg
voiture-002.jpg
avion-003.jpg

Ensuite mon code php créer des dossiers d'aprés le nom des fichiers :

Dossier Images----->avion-001.jpg
voiture-002.jpg
avion-003.jpg
dossier avion
dossier voiture

Donc mon but serait d'afficher:

Dossier Images----->dossier avion------->avion-003.jpg
avion-001.jpg
dossier voiture----->voiture-002.jpg

Re: Mon foreach ne marche pas...

Posté : 31 oct. 2014, 20:30
par xTG
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 '-'

Re: Mon foreach ne marche pas...

Posté : 01 nov. 2014, 10:33
par Incognito
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...

Posté : 01 nov. 2014, 10:52
par xTG
A priori tu as toutes les variables pour le faire :
rename($cheminFichier, $nouveauDossier . '/' . $nomFichier);