[RESOLU] Mon foreach ne marche pas...

Eléphant du PHP | 61 Messages

31 oct. 2014, 12:26

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.

ViPHP
xTG
ViPHP | 7331 Messages

31 oct. 2014, 12:35

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

Eléphant du PHP | 113 Messages

31 oct. 2014, 12:39


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


Eléphant du PHP | 61 Messages

31 oct. 2014, 12:45

D'accord j'ai bien compris mon probléme mais je n'arrive pas a le résoudre...

ViPHP
xTG
ViPHP | 7331 Messages

31 oct. 2014, 13:54

As-tu compris mon exemple ?

Eléphant du PHP | 113 Messages

31 oct. 2014, 14:13


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


Eléphant du PHP | 61 Messages

31 oct. 2014, 16:44

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 ...

ViPHP
xTG
ViPHP | 7331 Messages

31 oct. 2014, 17:00


Eléphant du PHP | 61 Messages

31 oct. 2014, 18:17

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

Eléphant du PHP | 61 Messages

31 oct. 2014, 19:10

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...

ViPHP
xTG
ViPHP | 7331 Messages

31 oct. 2014, 19:21

As-tu une arborescence de dossier connue à l'avance ?

Eléphant du PHP | 61 Messages

31 oct. 2014, 20:03

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

ViPHP
xTG
ViPHP | 7331 Messages

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 '-'

Eléphant du PHP | 61 Messages

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 .

ViPHP
xTG
ViPHP | 7331 Messages

01 nov. 2014, 10:52

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