[Résolut]Probleme upload multi image

Eléphant du PHP | 418 Messages

05 déc. 2010, 13:37

Bonjours à tous

J'aimerais laisse rla possiblité à l'utilisateur, d'envoyer au mawimum trois images.

J'ai pas trouver de script permettant de faire ce que je veux, comme je le veux

voici le script que j'ai pour envoyer une image, jai essayer de l'améliorer pour le faire fonctionner avec trois fichiers mais en vain

	function QueryAnnonces()
	{
		$dossier = 'imgannonces/'.$_SESSION['login'].'/';
		if(is_dir($dossier))
		{
			$target = $dossier;  // Repertoire cible	
		}
		else
		{
			$creat = mkdir($dossier);
			$target = $dossier;
		}
		$extension  = 'jpg'||'jpeg'||'gif'||'png';      // Extension du fichier sans le .
		$max_size   = 200000;     // Taille max en octets du fichier
		$width_max  = 300;        // Largeur max de l'image en pixels
		$height_max = 300;        // Hauteur max de l'image en pixels

		// On vérifie si le champ est rempli
		if(!empty($_FILES['image']['name']))
		{
			// On vérifie l'extension du fichier
			if(substr($_FILES['image']['name'], -3) == $extension)
			{
				// On récupère les dimensions du fichier
				$infos_img = getimagesize($_FILES['image']['tmp_name']);
				
				// On vérifie les dimensions et taille de l'image
				if (($infos_img[0] <= $width_max) && ($infos_img[1] <= $height_max) && ($_FILES['image']['size'] <= $max_size))
				{
					// Si c'est OK, on teste l'upload
					if (move_uploaded_file($_FILES['image']['tmp_name'],$target.$_FILES['image']['name']))
					{
						// Si upload OK alors on affiche le message de r&eacute;ussite
	
						// on définie les variables
						$Categorie=$_POST['Categorie'];
						$Titre=$_POST['Titre'];
						$Marque=$_POST['Marque'];
						$Model=$_POST['Model'];
						$Type=$_POST['Type'];
						$Annee=$_POST['Annee'];
						$Description=$_POST['Description'];
						$Prix=$_POST['Prix'];
						$Login=$_POST['Login'];
						$Phone=$_POST['Phone'];
						$Mail=$_POST['Mail'];
						$Date=$_POST['Date'];
						$Etat=$_POST['Etat'];
						if (empty($Titre)||empty($Marque)||empty($Model)||empty($Type)||empty($Annee)||empty($Description)||empty($Prix)||empty($Phone))
						{
							echo 'un ou plusieurs champs sont vides';
						}
						else
						{
							$SQL_Categorie = mysql_real_escape_string(htmlspecialchars($Categorie, ENT_QUOTES));
							$SQL_Titre = mysql_real_escape_string(htmlspecialchars($Titre, ENT_QUOTES));
							$SQL_Marque = mysql_real_escape_string(htmlspecialchars($Marque, ENT_QUOTES));
							$SQL_Model = mysql_real_escape_string(htmlspecialchars($Model, ENT_QUOTES));
							$SQL_Type = mysql_real_escape_string(htmlspecialchars($Type, ENT_QUOTES));
							$SQL_Annee = mysql_real_escape_string(htmlspecialchars($Annee, ENT_QUOTES));
							$SQL_Description = mysql_real_escape_string(htmlspecialchars($Description, ENT_QUOTES));
							$SQL_Image = mysql_real_escape_string($target.$_FILES['image']['name']);
							$SQL_Prix = mysql_real_escape_string(htmlspecialchars($Prix, ENT_QUOTES));
							$SQL_Login = mysql_real_escape_string(htmlspecialchars($Login, ENT_QUOTES));
							$SQL_Phone = mysql_real_escape_string(htmlspecialchars($Phone, ENT_QUOTES));
							$SQL_Mail = mysql_real_escape_string(htmlspecialchars($Mail, ENT_QUOTES));
							$SQL_Date = mysql_real_escape_string(htmlspecialchars($Date, ENT_QUOTES));
							$SQL_Etat = mysql_real_escape_string(htmlspecialchars($Etat, ENT_QUOTES));			
							// On insert dans la BdD
							mysql_query("INSERT INTO annonces (Id,Categorie,Titre,Marque,Model,Type,Annee,Description,Photo,Prix,Login,Phone,Mail,Date,Etat) VALUES('','$SQL_Categorie','$SQL_Titre','$SQL_Marque','$SQL_Model','$SQL_Type','$SQL_Annee','$SQL_Description','$SQL_Image','$SQL_Prix','$SQL_Login','$SQL_Phone','$SQL_Mail','$SQL_Date','$SQL_Etat')") or exit (mysql_error());
							echo 'Ajout réussit, votre annonces seras soumise à validation de l\'administrateur, et ne seras affiché qu\'après cela.<br /><br />
							<a href="index.php">Retourner à l\'index</a>';
						}
					}
					else 
					{
						// Sinon on affiche une erreur syst&egrave;me
						echo '<span class="resupload">Probl&egrave;me lors de l&rsquo;upload de l\image!</span>
						<br /><br />
						<span class="resupload">', $_FILES['fichier']['error'], '</span>
							<br /><br /><a href="index.php?s=ajout">Re éssayer</a>';
					}
				}
				else
				{
					// Sinon on affiche une erreur pour les dimensions et taille de l'image
					echo '<span class="resupload">Probl&egrave;me dans les dimensions ou la taille de l&rsquo;image!</span>
					<br /><br /><a href="index.php?s=ajout">Re éssayer</a>';
				}
			}
			else 
			{
				// Sinon on affiche une erreur pour l'extension
				echo '<span class="resupload">Votre image ne comporte pas une extension valide!</span>
				<br /><br /><a href="index.php?s=ajout">Re éssayer</a>';
			}
		}
		else
		{
			// on définie les variables
			$Categorie=$_POST['Categorie'];
			$Titre=$_POST['Titre'];
			$Marque=$_POST['Marque'];
			$Model=$_POST['Model'];
			$Type=$_POST['Type'];
			$Annee=$_POST['Annee'];
			$Description=$_POST['Description'];
			$Prix=$_POST['Prix'];
			$Login=$_POST['Login'];
			$Phone=$_POST['Phone'];
			$Mail=$_POST['Mail'];
			$Date=$_POST['Date'];
			$Etat=$_POST['Etat'];
			if (empty($Titre)||empty($Marque)||empty($Model)||empty($Type)||empty($Annee)||empty($Description)||empty($Prix)||empty($Phone))
			{
			echo 'un ou plusieurs champs sont vides';
			}
			else
			{
				$SQL_Categorie = mysql_real_escape_string(htmlspecialchars($Categorie, ENT_QUOTES));
				$SQL_Titre = mysql_real_escape_string(htmlspecialchars($Titre, ENT_QUOTES));
				$SQL_Marque = mysql_real_escape_string(htmlspecialchars($Marque, ENT_QUOTES));
				$SQL_Model = mysql_real_escape_string(htmlspecialchars($Model, ENT_QUOTES));
				$SQL_Type = mysql_real_escape_string(htmlspecialchars($Type, ENT_QUOTES));
				$SQL_Annee = mysql_real_escape_string(htmlspecialchars($Annee, ENT_QUOTES));
				$SQL_Description = mysql_real_escape_string(htmlspecialchars($Description, ENT_QUOTES));
				$SQL_Image = "";
				$SQL_Prix = mysql_real_escape_string(htmlspecialchars($Prix, ENT_QUOTES));
				$SQL_Login = mysql_real_escape_string(htmlspecialchars($Login, ENT_QUOTES));
				$SQL_Phone = mysql_real_escape_string(htmlspecialchars($Phone, ENT_QUOTES));
				$SQL_Mail = mysql_real_escape_string(htmlspecialchars($Mail, ENT_QUOTES));
				$SQL_Date = mysql_real_escape_string(htmlspecialchars($Date, ENT_QUOTES));
				$SQL_Etat = mysql_real_escape_string(htmlspecialchars($Etat, ENT_QUOTES));			
				// On insert dans la BdD
				mysql_query("INSERT INTO annonces (Id,Categorie,Titre,Marque,Model,Type,Annee,Description,Photo,Prix,Login,Phone,Mail,Date,Etat) VALUES('','$SQL_Categorie','$SQL_Titre','$SQL_Marque','$SQL_Model','$SQL_Type','$SQL_Annee','$SQL_Description','$SQL_Image','$SQL_Prix','$SQL_Login','$SQL_Phone','$SQL_Mail','$SQL_Date','$SQL_Etat')") or exit (mysql_error());
				echo 'Ajout réussit, votre annonce seras soumise à validation de l\'administrateur, et ne seras affiché qu\'après cela.<br /><br />
				<a href="index.php">Retourner à l\'index</a>';
			}
		}
	}

Comment pourrais je améliorer ce script pour faire ce que je souhaite?

(j'ai pas mis le script amélioré, je l'ai perdu dans mes tentative s'essaie, mais en gros je traiter l'envoie à la fin en dehors de l'upload, et dans l'upload je définissais les variables $Image1, $image2 etc...
De toute manière autant que vous voyais celui la peut être peux t'on l'améliorer.

J vous remercie de votre aide

Bonne journée

@++

Cordialment
Modifié en dernier par Fre3z69 le 03 oct. 2011, 02:05, modifié 3 fois.

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

05 déc. 2010, 16:09

salut,

la reponse de la doc à ta question => http://www.php.net/manual/fr/features.f ... ltiple.php

pour l'amélioration du code, j'ai regardé ton code en diagonale, ce que je peut dire
if (empty($Titre)||empty($Marque)||empty($Model)||empty($Type)||empty($Annee)||empty($Description)||empty($Prix)||empty($Phone))
pourquoi pas mais c'est mieux de le faire sur les $_POST car tu ne peut pas savoir si les index correspondant existent dans le tableau post (le client peu modifer le source html).

tu pourrais tester le retour de mysql_query après plutôt qu'un or die peu propre ($r = ysql_query(); if ($r === false) { gestion de l'erreur; })

@+
Il en faut peu pour être heureux ......

Eléphant du PHP | 418 Messages

05 déc. 2010, 20:52

Merci de ton aide

Pour les variables dans les empty($variables) qui correspondent aux $_POST['variable'] j'ai pas compris ce que tu ma dit de faire, et pourquoi?
Peux tu m'expliquer cela, peux être que j'ai grand a apprendre

Merci pour la doc, j'ai vu celui la, mais j'y qui pas arrivé.

Le truc c'est de bien gardé l'architecture $_FILES['userfile']['name'][$i] , $i correspondant à un une initialisation avant le foreach comme $i=0; ???

et comment mettre dans la Bdd le chemin d'accès de l'image et copier l'image dans le fichier avec cet architecture??

Puis pour finir dans if ($r === false) on met pas if ($r == false)? sinon quel est la déférence ou les erreurs qui peuvent survenir??

Désolé pour mes question, j'ai jamais fait de multi upload, j'avoue que j'y comprend rien, déjà que j'ai oublier beaucoup en 6 mois sans rien faire.

Merci de votre aide, et de votre temps pour répondre à mes questions

Cordialement

@++

ViPHP
AB
ViPHP | 5818 Messages

05 déc. 2010, 22:38

Pour répondre à ta question si dans mon formulaire html j'écris
                        <input name = "photo[]" type = "file" size = "70" /><br />                       
                        <input name = "photo[]" type = "file" size = "70" />               
                        <input name = "photo[]" type = "file" size = "70" />
... je vais récupérer un tableau $_FILES['photo'] qu'il me suffira de lister pour récupérer le contenu des différents champs et informations.

Après tu devrais aussi gérer le cas ou un fichier de même nom que celui téléchargé existe déjà sur le serveur...
Concernant les dimensions des images, éventuellement tu pourrais ne pas les limiter (confort pour l'utilisateur) mais les redimensionner en cas de besoin.

Si besoin tu peux regarder ou utiliser cette classe . Dans le même topic, le deuxième message comprend un exemple d'upload de ce que tu souhaiterais faire.

Eléphant du PHP | 418 Messages

06 déc. 2010, 04:12

Super tuto, super class, c'est la classe ^^ (ok j'ai rien dit ^^)

Bref
						
foreach ($resultat as $num => $rep)
{
	foreach ($rep as $key => $value)
	{                                                      
	if(!empty($value['nom']))                                  
	echo 'champ '.$champ.' n° '.$num.' = '.$value['nom'].' '. $value['dim'].', téléchargé dans "'.$key.'"<br />';
// Ici je vais définir les variables pour pouvoir les mettre dans la Bdd, et l'écho de dessus vas disparaitre, je laisse en debug
	//$dirr = $key.'/'.$value['nom'];
	//$SQL_Image=$key.'/'.$value['nom'];
	} 
}
J'aimerais en fait, pouvoir faire en sorte que $SQL_Image se nome successivement et en permanence $SQL_Image1 $SQL_Image2 $SQL_Image3, afin de pouvoir attribuer ses variables pour l'incorporation de l'url de l'image dans ma Bdd

J'ai pensé à un FOR { } , mais en cela, je suis nul, j'ai toujours pas compris comment on construit un for.
En fait je sais comment ça marche, mais je sais pas les construire.

Pourriez vous SVP m'aider à faire cela??

Merci beaucoup

Cordialement

@++

ViPHP
AB
ViPHP | 5818 Messages

08 déc. 2010, 00:53

Utilises un tableau, ce sera plus simple :
$SQL_Image = array();

foreach ($resultat as $num => $rep)
{
        foreach ($rep as $key => $value)
        {                                                      
           if(!empty($value['nom']))   $SQL_Image[] = $key.'/'.$value['nom'];
        }
}

$SQL_Image1 = isset($SQL_Image[0])? $SQL_Image[0] : null;
$SQL_Image2 = isset($SQL_Image[1])? $SQL_Image[1] : null;
$SQL_Image3 = isset($SQL_Image[2])? $SQL_Image[2] : null;
ça devrait fonctionner.

Sinon tu fais comme tu veux mais si le nom du dossier est toujours le même, perso je ne le mets pas en bdd. Je ne l'indique qu'à l'affichage, ex :
$dossier = 'PHOTO/';
//...
<img src = "<php echo $dossier.$image1?>" />
<img src = "<php echo $dossier.$image2?>" />
<img src = "<php echo $dossier.$image3?>" />
ça économise des données redondantes en bdd et puis si tu veux changer le nom du dossier c'est beaucoup plus simple.

D'autre part, à moins que tes images soient prévues pour être insérées dans un cadre déjà dimensionné, ce serait mieux d'enregistrer en bdd les dimensions des images pour pouvoir les indiquer dans la balise image et éviter des effets d'accordéon pour le premier affichage de la page (visible si tu vide le cache de ton navigateur).

Eléphant du PHP | 418 Messages

08 déc. 2010, 01:12

Merci beaucoup, je viens tout juste d'avoir une idée similaire, mais j'avoue toi c'est plus concret.

Je vais tester ça avec impatience, ça m'aiderais vraiment

pour définir une valeur nulle au cas ou aucune image n'a était uploadé, je fait un truc du genre?
$SQL_Image = array();

foreach ($resultat as $num => $rep)
{
        foreach ($rep as $key => $value)
        {                                                      
           if(!empty($value['nom']))   $SQL_Image[] = $key.'/'.$value['nom'];
           if(empty($value['nom']))   $SQL_Image[] = "";
        }
}

$SQL_Image1 = isset($SQL_Image[0])? $SQL_Image[0] : null;
$SQL_Image2 = isset($SQL_Image[1])? $SQL_Image[1] : null;
$SQL_Image3 = isset($SQL_Image[2])? $SQL_Image[2] : null;
Je vais quand même tester, mais ne sait on jamais si ça ne fonctionne pas, j'aurais demander avant ^^, je vous tiens au courant

Et pour les dossiers, non, ils ne sont jamais, le même, en fait la racine oui, mais après j'ai créer lors de l'inscription des membre un dossier portant son login, afin de pouvoir plus aisément afficher toutes les images présentes dans son dossier.

Je sais pas renommer les images, et je souhaite plus tard créer un système permettant à l'utilisateur de choisir les images qu'il désires effacer ou garder, avec attribution des nouvelles valeurs dans la Bdd.
Il va sans dire que il y auras beaucoup de dossiers, mais peu d'image en fait, car, un script est prévu pour effacer les annonces trop anciennes (plus de 6 mois) avec les images correspondantes. (si c'est possible)
Voila, certes c'est une idée, mais bon c'est surtout le plaisir de codé et de voir un bijoux sortir de rien ^^

y a des tonnes de scripts sur le net, plus ou moins bien codés, mais j'aime faire mes scripts, afin de m'améliorer, et bien sur demander de l'aide au cas ou, car dés fois on vois pas toujours la solution alors que c'est juste sous nos yeux et qu'il fallait mieux regarder, mais c'est comme ça ^^

En tous cas un grand Merci pour votre aide, et surtous aussi le fait de prendre du temps à répondre, sans forcement dire, vas voir sur google sale noob.
Réponse classique qui veux dire, j'en sais rien, désolé, je suis aussi débutant que toi en fait. Mais c'est codé chut ^^

cordialement

Fre3z69
Modifié en dernier par Fre3z69 le 08 déc. 2010, 01:26, modifié 1 fois.

ViPHP
AB
ViPHP | 5818 Messages

08 déc. 2010, 01:19


pour définir une valeur nulle au cas ou aucune image n'a était uploadé, je fait un truc du genre?
Bah pas la peine de toucher l'intérieur du foreach, puisque c'est fait dans les lignes suivantes :
$SQL_Image1 = isset($SQL_Image[0])? $SQL_Image[0] : null;
$SQL_Image2 = isset($SQL_Image[1])? $SQL_Image[1] : null;
$SQL_Image3 = isset($SQL_Image[2])? $SQL_Image[2] : null;
ou si tu veux tu peux faire
$SQL_Image1 = isset($SQL_Image[0])? $SQL_Image[0] : '';
$SQL_Image2 = isset($SQL_Image[1])? $SQL_Image[1] : '';
$SQL_Image3 = isset($SQL_Image[2])? $SQL_Image[2] : '';
EDIT J'avais édité mon message précédent que tu n'a peut-être pas vu concernant les dimensions des images

Eléphant du PHP | 418 Messages

08 déc. 2010, 01:31

Oui ok je viens de comprendre.

Bon maintenant me reste à savoir si je peux le mettre directement en dehors du le premier foreach ou il faut qu'il soir dedans


premier foreach
foreach ($resultat as $num => $rep)
{
        foreach ($rep as $key => $value)
        {                                                      
        if(!empty($value['nom']))                                  
        echo 'champ '.$champ.' n° '.$num.' = '.$value['nom'].' '. $value['dim'].', téléchargé dans "'.$key.'"<br />';
// Ici je vais définir les variables pour pouvoir les mettre dans la Bdd, et l'écho de dessus vas disparaitre, je laisse en debug
        //$dirr = $key.'/'.$value['nom'];
        //$SQL_Image=$key.'/'.$value['nom'];
        }
}
Merci bien

ViPHP
AB
ViPHP | 5818 Messages

08 déc. 2010, 04:18

Je comprend pas ta dernière question.

Je t'ai déjà donné le code complet pour extraire tes variables, je te le remet :
$SQL_Image = array();

foreach ($resultat as $num => $rep)
{
        foreach ($rep as $key => $value)
        {                                                      
           if(!empty($value['nom']))   $SQL_Image[] = $key.'/'.$value['nom'];
        }
}

$SQL_Image1 = isset($SQL_Image[0])? $SQL_Image[0] : '';
$SQL_Image2 = isset($SQL_Image[1])? $SQL_Image[1] : '';
$SQL_Image3 = isset($SQL_Image[2])? $SQL_Image[2] : '';

Eléphant du PHP | 418 Messages

08 déc. 2010, 16:18

Salut

Désolé, en fait je voulais savoir si je l'implémente comme ceci:
foreach ($resultat as $num => $rep)
{
        foreach ($rep as $key => $value)
        {                                                      
        if(!empty($value['nom']))                                  
$SQL_Image = array();

foreach ($resultat as $num => $rep)
{
        foreach ($rep as $key => $value)
        {                                                      
           if(!empty($value['nom']))   $SQL_Image[] = $key.'/'.$value['nom'];
        }
}

$SQL_Image1 = isset($SQL_Image[0])? $SQL_Image[0] : '';
$SQL_Image2 = isset($SQL_Image[1])? $SQL_Image[1] : '';
$SQL_Image3 = isset($SQL_Image[2])? $SQL_Image[2] : '';
        }
}
Ou bien comme cela:
foreach ($resultat as $num => $rep)
{
        foreach ($rep as $key => $value)
        {                                                      
        if(!empty($value['nom']))                                  

        }
}
$SQL_Image = array();

foreach ($resultat as $num => $rep)
{
        foreach ($rep as $key => $value)
        {                                                      
           if(!empty($value['nom']))   $SQL_Image[] = $key.'/'.$value['nom'];
        }
}

$SQL_Image1 = isset($SQL_Image[0])? $SQL_Image[0] : '';
$SQL_Image2 = isset($SQL_Image[1])? $SQL_Image[1] : '';
$SQL_Image3 = isset($SQL_Image[2])? $SQL_Image[2] : '';

Dans l'idée, je pense que en le mettant comme ceci ça ne fonctionnera pas, mais c'est juste pour te montrer ce que je voulais te dire

en tout cas merci de ton aide

cordialement

ViPHP
AB
ViPHP | 5818 Messages

08 déc. 2010, 18:52

Tu tiens absolument à faire en sorte que cela ne fonctionne pas ?

Tu fais comme je t'ai indiqué et INUTILE de rajouter du code en supplément.

Tu as essayé ce que je t'ai montré ?

Si ce n'est pas ce que tu attends, expliques-toi avec des mots, pas avec du code car ce que tu montre dans ton dernier message ne correspond à rien :wink:

Eléphant du PHP | 418 Messages

26 déc. 2010, 03:19

bon je relance ce sujet

j'ai tester ce que tu ma dit

j'ai rien compris à ce que tu m'as expliquer

tu ma dit fait ca
$SQL_Image = array();

foreach ($resultat as $num => $rep)
{
        foreach ($rep as $key => $value)
        {                                                      
           if(!empty($value['nom']))   $SQL_Image[] = $key.'/'.$value['nom'];
        }
}

$SQL_Image1 = isset($SQL_Image[0])? $SQL_Image[0] : '';
$SQL_Image2 = isset($SQL_Image[1])? $SQL_Image[1] : '';
$SQL_Image3 = isset($SQL_Image[2])? $SQL_Image[2] : '';
mais ca sort d'où $résultat et faut pas oublier que je dois les mettre dans le dossier aussi

bref, il n'y aurais pas un tutoriel pour m'expliquer le multiupload??

J'aimerais vraiment que ca fonctionne, sachant que je dois donc uploader, mais aussi mettre le nom des images dans la BDD avec le reste du formulaire

Merci de votre aide

Bonnes fêtes

Cordialment

ViPHP
AB
ViPHP | 5818 Messages

27 déc. 2010, 23:09

Le formulaire 2 de cet exemple comprend un exemple d'upload de ce que tu souhaiterais faire. Il te suffira d'ajuster à tes besoins.

D'ailleurs c'est toi qui m'a donné le code avec "foreach ($resultat as $num => $rep)", je croyais donc que tu savais d'où venait la variable $resultat...

Bon donc dans l'exemple que je viens de te donner en lien, l'intérieur de la condition "if (isset($_POST['formulaire_2']))" devrait être quelque chose du genre :

//...
if (isset($_POST['formulaire_2']))
        {

                //Récupération des résultats
                $transfert_form2_photo = $form2_photo->Get_Tab_upload ();

                $SQL_Image = array();

                if (!empty ($transfert_form2_photo))
                        {
                                $resultat = $transfert_form2_photo['resultat'];//tableau à trois dimensions  
                                                                
                                foreach ($resultat as $num => $rep)
                                        {
                                              foreach ($rep as $key => $value)
                                                   {                                                      
                                                      if(!empty($value['nom']))   $SQL_Image[] = $key.'/'.$value['nom'];
                                                    }
                                        }
                            }
                            
                  $SQL_Image1 = isset($SQL_Image[0])? $SQL_Image[0] : '';
                  $SQL_Image2 = isset($SQL_Image[1])? $SQL_Image[1] : '';
                  $SQL_Image3 = isset($SQL_Image[2])? $SQL_Image[2] : '';
                     

                             

                //récupération de des autres données post et enregistrement des données en bdd etc.
               
                // Rechargement de la page pour éviter un multiple post en cas de rafraichissement de la page par le visiteur
                $form2_photo->Get_Reload_page();
        }

Eléphant du PHP | 418 Messages

29 déc. 2010, 09:57

Bon, je viens de tester ton script

effectivement cela fonctionne super bien

Ça fonctionne super, j'ai enlever $form2_photo->Get_Reload_page(); à la fin, je sais pas à quoi ça sert mais sans ça je voyais pas le resultat final.

merci de ton aide

@++

Cordialement