form complet avec multi-upload: tout est enregistré sauf les photos??

Eléphant du PHP | 250 Messages

11 oct. 2008, 15:06

Bonjour
Il y avait longtemps que je ne vous avais pas embêté avec mes 'tits problème... :oops:
J'ai donc un formulaire de création d'article pour une boutique; sur celui ci j'ai souhaité avoir la possibilité d'uploader 6 photos par article. Tout se passe bien, sauf que les photos ne sont JAMAIS enregistrées; je précise qu'elles doivent l'être dans un dossier sur le serveur et non pas dans la base.
Voici mon code:
<?php
$extension = ("'jpg', 'gif', 'jpeg', 'png'");//définition de la variable extension gérant les ext. autorisées
$dos_destinataire = '../photos/';//définition de l'adresse du dossier destinataire
 // on teste si le formulaire a été soumis  
 if (isset($_POST['enregistrer'])) { 
     // on se connecte  notre base 
   include ('../code/connect.inc.php'); 
  //déclaration chargement photo
  if(isset($_FILES['fichier']))
  {
//$_FILES existe  

$compteur=0;

foreach ($_FILES['fichier']['name'] as $key => $value) {
$fichier=$value;//nom reel de l'image
$size=$_FILES['fichier']['size'][$key]; //poids de l'image en octets  
$tmp=$_FILES['fichier']['tmp_name'][$key];//nom temporaire de l'image (sur le serveur)  
$type=$_FILES['fichier']['type'][$key];//type de l'image  
//On récupère la taille de l'image  
list($width,$height)=getimagesize($tmp);  
if (is_uploaded_file($tmp)) //permet de vérifier si le fichier a été uplodé via http  
{  
  
//vérification du type de l'image et son poids 
if ( substr($fichier, -3) == $extension && $size<=2097152  )  
{  
// type mime jpeg, jpg, gif ou png poids < à 2097152 octets 
//Pour supprimer les espaces dans les noms de fichiers 
$fichier = preg_replace ("` `i","",$fichier); 
//On vérifie s'il existe une image qui a le même nom dans le répertoire  
if (file_exists('../photos/'.$fichier))  
{  
/*Le fichier existe on rajoute dans son nom le timestamp du moment pour le 
différencier de la première 
*/ 
$nom_final= preg_replace("`.`is",date("U").".",$fichier);  
}  
else {  
$nom_final=$fichier; //l'image n'existe pas on garde le même nom  
}  
//on déplace l'image dans le répertoire final 
 
if (move_uploaded_file($nom_final, $dos_destinataire)) {  
//Message indiquant que tout s'est bien passé  
echo 'Votre référence a bien été prise en compte<br /><br /><br />';  
} 
else { 
//l'image ne peut être déplacée, on supprime le fichier temporaire 
@ unlink ($tmp); 
echo 'L\'image n\'a pu être déplacée !<br /><br /><br />';  
} 
  
}  
else {  
//Le type mime, ou la taille ou le poids est incorrect  
echo 'Votre image a été rejetée (poids, taille ou type incorrect)<br /><br /><br />';  
}  
}  

$tab_final[$compteur] = $nom_final;
$compteur++;
}
} 
    // on teste la déclaration de nos variables 
    if (!isset($_POST['description']) && ($_POST['titre']) && ($_POST['prix'])) { 
       $erreur = 'Les variables nécessaires au script ne sont pas définies.'; 
    } 
    else { 
       if (empty($_POST['description'])&& ($_POST['titre']) && ($_POST['prix'])) { 
          $erreur = 'Le champs description, titre ou prix est vide.'; 
       } 
  
          // si tout est bon, on peut commencer l'insertion dans la base 
       else { 
          // lancement de la requête d'insertion 
		  //définition de quelques variables
$marque = $_POST['marque'];
$modele = $_POST['modele'];
$annee = $_POST['annee'];
$type = $_POST['type'];
$cc = $_POST['cc'];
$genre = $_POST['genre'];
$titre = $_POST['titre'];
$descrip = $_POST['description'];
$prix = $_POST['prix'];
$photo = $_FILES['fichier'];
$famille = $_POST['famille'];
$ssfamille = $_POST['ssfamille'];
$nam_photo = $nom_final;

$sql = "INSERT INTO stock (id_article, date, marque, modele, type, annee, cc, titre, descrip, prix, famille, ss_famille, nam_photo) VALUES('', NOW(), '".$marque."', '".$modele."', '".$type."', '".$annee."', '".$cc."', '".$titre."', '".$descrip."', '".$prix."', '".$famille."', '".$ssfamille."', '".$nam_photo."')";  
     // on lance la requête (mysql_query) et on impose un message d'erreur si la requête ne se passe pas bien (or die) 
          mysql_query($sql) or die('Erreur SQL !'.$sql.'<br />'.mysql_error()); 
       

          // on ferme la connexion à la base de données 
          mysql_close(); 
  
          // on redirige vers la page d'accueil de l'admin 
          header('Location: insert_article.php'); 
          // on termine le script courant 
          exit(); 
       } 
    }  
  }
   
?>
Et maintenant le formulaire:

Code : Tout sélectionner

<form action="insert_article.php" method="POST" enctype="multipart/form-data">Telechargement de fichier:<br /> <label>Marque</label> <select name="marque"><?php if (isset($_POST['marque'])) echo (trim($_POST['marque'])); ?> <option value="">------------------------------------------</option> <option value="abc">ABC</option> <option value="ace">ACE</option> (380 lignes à suivre... + les autres champs...et enfin la partie "file") <br /> <input type="hidden" name="MAX_FILE_SIZE" VALUE="2000000" /> <br /> <legend>Upload des photos:<?php if (isset($_POST['photo'])) echo (trim($_POST['photo'])); ?></legend> <br /> <label for="photo">Photo 1:</label><input type="file" name="fichier[]" /> <br /> <label for="photo_2">Photo 2:</label><input type="file" name="fichier[]" /> <br /> <label for="photo_3">Photo 3:</label><input type="file" name="fichier[]" /> <br /> <label for="photo_4">Photo 4:</label><input type="file" name="fichier[]" /> <br /> <label for="photo_5">Photo 5:</label><input type="file" name="fichier[]" /> <br /> <label for="photo_6">Photo 6:</label><input type="file" name="fichier[]" /> <br /> <label> <input type="submit" name="enregistrer" value="Enregistrer"> </label> </form>
Lorsque je valide le formulaire, tout est bien enregistré das ma base SAUF l nom e la photo; mais les photos qui doivent, elles, être enregistrées dans un dossier "../photos/" ne le sont pas... :shock:
De plus, problème non permanent, mais plutôt "aléatoire" (je mets des guillemets car je ne suis pas certain que cela soit aléatoire), j'ai donc parfois le message d'erreur "Votre image a été rejetée (poids, taille ou type incorrect)"; j'ai vérifié le type, le poids, la taille, rien d'anormal..
Cela fait près d'une semaine que je bataille avec ça, et franchement, je ne vois plus rien...
Le moindre de vos avis, conseil, etc. sera comme toujours le bienvenu...
Merci d'avance!

EDIT: Désolé, j'ai envoyé le message une 1ere fois avant d'avoir tout écrit... :roll:
"L'histoire, à l'image de toutes choses dans l'univers, semble avoir comme unique règle le côté ondulatoire."

Mammouth du PHP | 1668 Messages

11 oct. 2008, 15:21

Bonjour,

As-tu un message d'erreur comme quoi le type est incorrecte ?

Ta première ligne est manifestement fausse :
<?php 
$extension = ("'jpg', 'gif', 'jpeg', 'png'");//définition de la variable extension gérant les ext. autorisées 
Ou alors je ne la comprend pas, essaye :

<?php 
$extension = array('jpg', 'gif', 'jpeg', 'png');//définition de la variable extension gérant les ext. autorisées
//...
if ( in_array(substr($fichier, -3), $extension) && $size<=2097152  )   
{   
// type 
"À ceux qui poursuivent leurs rêves et se spécialisent dans l'impossible" Joseph Kong

10 ans de PHP, déjà.

"moi jtrouve que katagoto il déchire!" Nagol

Eléphant du PHP | 250 Messages

11 oct. 2008, 15:27

Salut KATAGOTO
Oui, comme je l'indique un peu plus bas (mais j'ai du éditer mon message pour cause de mauvaise manip'), parfois, mais pas toujours!, j'ai le message 'Votre image a été rejetée (poids, taille ou type incorrect)'....
Je ne comprnds ni pourquoi c'est aléatoire, ni pourquoi lorsque je n'ai pas de message, les ou la photo n'est (ne sont) pas enregistré(s)
EDIT: J'ai essayé ta solution et j'obtiens 2 fois ce message :

Code : Tout sélectionner

Warning: in_array() [function.in-array]: Wrong datatype for second argument in /homez.9/site/www/boutik/gestion_boutik/insert_article.php on line 33 Votre image a été rejetée (poids, taille ou type incorrect)
la ligne 33 étant celle modifiée avec l'aide de kagoto.
Et en plus un message:

Code : Tout sélectionner

Warning: Cannot modify header information - headers already sent by (output started at
.... :oops:
c'est de pire en pire, et cela fait une semaine à ce train là.... |*()
Edit (16h25): La honte au front je me dois d'avouer à Katagoto et au monde que je n'avais pas appliqué toutes ses recommandations; j'avais omis le array dans la 1ere ligne...maintenant, j'ai un message 'L'image n'a pu être déplacée'...et l'article n'est pas créé dans la base... :oops:
"L'histoire, à l'image de toutes choses dans l'univers, semble avoir comme unique règle le côté ondulatoire."

Mammouth du PHP | 1668 Messages

11 oct. 2008, 16:37

As-tu vérifié que tu possédait bien les droits en écriture sur le dossier dans lequel l'image doit-être transféré ?

Te plaint pas, moi, ça fait 3 mois que je suis sur un problème en C++ :oops:
"À ceux qui poursuivent leurs rêves et se spécialisent dans l'impossible" Joseph Kong

10 ans de PHP, déjà.

"moi jtrouve que katagoto il déchire!" Nagol

Eléphant du PHP | 250 Messages

11 oct. 2008, 16:42

Oui Katagoto
chmod = 744
Une fois l'enregistrement de l'article se fait bien une fois non, mais toujours JAMAIS les phots...je n vois plus...
Heuuu, franchement je laisse le c++
"L'histoire, à l'image de toutes choses dans l'univers, semble avoir comme unique règle le côté ondulatoire."

Mammouth du PHP | 1668 Messages

11 oct. 2008, 19:11

bah, je pense que $nom_photo y est pour quelque chose...
MySQL ne stock pas les tableaux comme ça...
de plus, pourrait-tu nous re-transmettre ton code actuel, indenté et privé des $x = $_POST["x"]
On y verra plus claire, y a t'il un message d'erreur sur ta page quand l'injection à foiré ?
"À ceux qui poursuivent leurs rêves et se spécialisent dans l'impossible" Joseph Kong

10 ans de PHP, déjà.

"moi jtrouve que katagoto il déchire!" Nagol

Eléphant du PHP | 250 Messages

13 oct. 2008, 13:10

Bonjour
Et pardon pour le retard de ma réponse, ma fille et le week end sont passés par là... :lol:
Voici donc le code demandé par Katagoto:
<?php
$extension = array('jpg', 'gif', 'jpeg', 'png');//définition de la variable extension gérant les ext. autorisées
$dos_destinataire = '../photos/';//définition de l'adresse du dossier destinataire
 // on teste si le formulaire permettant d'uploader un fichier a été soumis  
 if (isset($_POST['enregistrer'])) { 
     // on se connecte  notre base 
   include ('../code_boutik/connect.inc.php'); 
  //déclaration chargement photo
  if(isset($_FILES['fichier']))
  {
//$_FILES existe  

$compteur=0;

    foreach ($_FILES['fichier']['name'] as $key => $value) {
$fichier=$value;//nom reel de l'image
$size=$_FILES['fichier']['size'][$key]; //poids de l'image en octets  
$tmp=$_FILES['fichier']['tmp_name'][$key];//nom temporaire de l'image (sur le serveur)  
$type=$_FILES['fichier']['type'][$key];//type de l'image  
//On récupère la taille de l'image  
list($width,$height)=getimagesize($tmp);  
if (is_uploaded_file($tmp)) //permet de vérifier si le fichier a été uplodé via http  
{  
  
//vérification du type de l'image et son poids 
if ( in_array(substr($fichier, -3), $extension) && $size<=2097152  )  
{  
// type mime jpeg, jpg, gif ou png poids < à 2097152 octets soit 2Mo
//Pour supprimer les espaces dans les noms de fichiers 
$fichier = preg_replace ("` `i","",$fichier);//ligne facultative :)  
//On vérifie s'il existe une image qui a le même nom dans le répertoire  
if (file_exists('../photos/'.$fichier))  
{  
/*Le fichier existe on rajoute dans son nom le timestamp du moment pour le 
différencier de la première 
*/ 
$nom_final= preg_replace("`.`is",date("U").".",$fichier);  
}  
else {  
$nom_final=$fichier; //l'image n'existe pas on garde le même nom  
}  
//on déplace l'image dans le répertoire final 
 
if (move_uploaded_file($nom_final, $dos_destinataire)) {  
//Message indiquant que tout s'est bien passé  
//Pour le test on affiche l'image 
echo 'Votre référence a bien été prise en compte<br /><br /><br />';  
} 
else { 
//l'image ne peut être déplacée, on supprime le fichier temporaire 
@ unlink ($tmp); 
echo 'L\'image n\'a pu être déplacée !<br /><br /><br />';  
} 
  
}  
              else {  
//Le type mime, ou la taille ou le poids est incorrect  
              echo 'Votre image a été rejetée (poids, taille ou type incorrect)<br /><br /><br />';  
                    }  
}  

$tab_final[$compteur] = $nom_final;
$compteur++;
                          }
  } 
    // on teste la déclaration de nos variables 
    if (!isset($_POST['description']) && ($_POST['titre']) && ($_POST['prix'])) { 
       $erreur = 'Les variables nécessaires au script ne sont pas définies.'; 
    } 
    else { 
       if (empty($_POST['description'])&& ($_POST['titre']) && ($_POST['prix'])) { 
          $erreur = 'Le champs description, titre ou prix est vide.'; 
       } 
  
          // si tout est bon, on peut commencer l'insertion dans la base 
       else { 
          // lancement de la requête d'insertion 
		  //définition de quelques variables


$sql = "INSERT INTO stock (id_article, date, marque, modele, type, annee, cc, titre, descrip, prix, famille, ss_famille, nam_photo) VALUES('', NOW(), '".$marque."', '".$modele."', '".$type."', '".$annee."', '".$cc."', '".$titre."', '".$descrip."', '".$prix."', '".$famille."', '".$ssfamille."', '".$nam_photo."')";  
     // on lance la requête (mysql_query) et on impose un message d'erreur si la requête ne se passe pas bien (or die) 
          mysql_query($sql) or die('Erreur SQL !'.$sql.'<br />'.mysql_error()); 
  
          // on ferme la connexion à la base de données 
          mysql_close(); 
  
          // on redirige vers la page d'accueil de l'admin 
          header('Location: insert_article.php'); 
          // on termine le script courant 
          exit(); 
       } 
    }  
  }
   
?>
Pour le(s) message(s) d'erreur(s), c'est un peu...aléatoire; parfois aucun message mais aucune image enregistrée dans le dossier cible et aucun nom d'image récupéré dans la bdd, parfois (je viens d'en faire le test) le nom est récupéré dans la bdd mais l'image n'est pas récupérée dans le dossier cible; le test que je viens de faire comportait l'upload de 2 images; je récupère le nom d'une image, aucune image dans le dossier-cible et le message d'erreur suivant:
L'image n'a pu être déplacée !

Warning: Cannot modify header information - headers already sent by (output started at /homez.9/lesite/www/boutik/gestion_boutik/insert_article.php:59) in /homez.9/lesite/www/boutik/gestion_boutik/insert_article.php on line 119
Merci de toute aide, avis, conseil, etc. qui me permette de sortir de là... :?
"L'histoire, à l'image de toutes choses dans l'univers, semble avoir comme unique règle le côté ondulatoire."

Mammouth du PHP | 1668 Messages

13 oct. 2008, 14:36

Pas le temps de parler :
<?php 
$extension = array('jpg', 'gif', 'jpeg', 'png');//définition de la variable extension gérant les ext. autorisées
$dos_destinataire = '../photos/';//définition de l'adresse du dossier destinataire
// on teste si le formulaire permettant d'uploader un fichier a été soumis
if (isset($_POST['enregistrer'])) {
	// on se connecte  notre base
	include ('../code_boutik/connect.inc.php');
	//déclaration chargement photo
	if(isset($_FILES['fichier']))
	{
		//$_FILES existe

		$compteur=0;

		foreach ($_FILES['fichier']['name'] as $key => $value) {
			$fichier=$value;//nom reel de l'image
			$size=$_FILES['fichier']['size'][$key]; //poids de l'image en octets
			$tmp=$_FILES['fichier']['tmp_name'][$key];//nom temporaire de l'image (sur le serveur)
			$type=$_FILES['fichier']['type'][$key];//type de l'image

			if (is_uploaded_file($tmp)) //permet de vérifier si le fichier a été uplodé via http
			{

				//vérification du type de l'image et son poids
				if ( in_array(substr($fichier, -3), $extension) && $size<=2097152  )
				{
					// type mime jpeg, jpg, gif ou png poids < à 2097152 octets soit 2Mo
					//Pour supprimer les espaces dans les noms de fichiers
					$nom_final=time()."_".preg_replace("#([^a-zA-Z0-9]+)#", "", $fichier).".".substr($fichier, -3);
					//on déplace l'image dans le répertoire final

					if (move_uploaded_file($nom_final, $dos_destinataire)) {
						//Message indiquant que tout s'est bien passé
						//Pour le test on affiche l'image
						echo 'Votre référence a bien été prise en compte<br /><br /><br />';
					}
					else {
						//l'image ne peut être déplacée, on supprime le fichier temporaire
						@ unlink ($tmp);
						echo 'L\'image n\'a pu être déplacée !<br /><br /><br />';
					}

				}
				else {
					//Le type mime, ou la taille ou le poids est incorrect
					echo 'Votre image a été rejetée (poids, taille ou type incorrect)<br /><br /><br />';
				}
			}

			$tab_final[$compteur] = $nom_final;
			$compteur++;
		}
	}
	// on teste la déclaration de nos variables
	if (!isset($_POST['description']) && ($_POST['titre']) && ($_POST['prix'])) {
		$erreur = 'Les variables nécessaires au script ne sont pas définies.';
	}
	else {
		if (empty($_POST['description'])&& ($_POST['titre']) && ($_POST['prix'])) {
			$erreur = 'Le champs description, titre ou prix est vide.';
		}

		// si tout est bon, on peut commencer l'insertion dans la base
		else {
			// lancement de la requête d'insertion
			//définition de quelques variables


			$sql = "INSERT INTO stock (id_article, date, marque, modele, type, annee, cc, titre, descrip, prix, famille, ss_famille, nam_photo) VALUES('', NOW(), '".$marque."', '".$modele."', '".$type."', '".$annee."', '".$cc."', '".$titre."', '".$descrip."', '".$prix."', '".$famille."', '".$ssfamille."', '".$nam_photo."')";
			// on lance la requête (mysql_query) et on impose un message d'erreur si la requête ne se passe pas bien (or die)
			mysql_query($sql) or die('Erreur SQL !'.$sql.'<br />'.mysql_error());

			// on ferme la connexion à la base de données
			mysql_close();

			// on redirige vers la page d'accueil de l'admin
			header('Location: insert_article.php');
		}
	}
}

?> 
teste ça :lol:
"À ceux qui poursuivent leurs rêves et se spécialisent dans l'impossible" Joseph Kong

10 ans de PHP, déjà.

"moi jtrouve que katagoto il déchire!" Nagol

Eléphant du PHP | 250 Messages

13 oct. 2008, 15:00

Salut
Alors:
Testé avec upload de 2 photos = aucune photos uploader dans le dossier-cible, aucun nom de photo enregistré...mais aucun message d'erreur! :shock:
Testé avec upload d'une photo = photo non uploader dans le dossier cible, le nom enregistré dans la bdd sous le nom suivant: 1223902355_IMG1693jpg.jpg, ET le message d'erreur:
L'image n'a pu être déplacée !

Warning: Cannot modify header information - headers already sent by (output started at /homez.9/lesite/www/boutik/gestion_boutik/insert_article.php:47) in /homez.9/lesite/www/boutik/gestion_boutik/insert_article.php on line 96
|*()
....comprends plus rien moi....
Merci pour ton aide...
"L'histoire, à l'image de toutes choses dans l'univers, semble avoir comme unique règle le côté ondulatoire."

ViPHP
AB
ViPHP | 5818 Messages

13 oct. 2008, 17:11

Cela ne risque pas de fonctionner, t'as un souçi avec move_uploaded_file()

Regarde ce tuto pour mieux comprendre sont utilisation
http://www.phpfrance.com/tutoriaux/inde ... e-fichiers

EDIT et puis si tu utilises if(move_uploaded_file()) tu n'as pas besoin d'utiliser au préalable if(is_uploaded_file())

Eléphant du PHP | 250 Messages

13 oct. 2008, 18:01

Bonsoir AB
et merci...je connaissais le tuto de Damien (que je remercie au passage ainsi que tous pour vos aides); j'ai souhaité l'adapter pour plusieurs champs "file", et c'est là je crois que je me suis emmêlé le clavier :oops:
Quant aux paramètres acceptés par move_upload_file, j'avais cru comprendre qu'il n'était que 2:

Liste de paramètres

filename

Le nom du fichier téléchargé.
destination

La destination du fichier déplacé.
Bon, je suis donc passé à côté... :mrgreen:
Me reste plus qu'à tout reprendre depuis le début, quoi..... :cry:

Merci tout de même
"L'histoire, à l'image de toutes choses dans l'univers, semble avoir comme unique règle le côté ondulatoire."

Modérateur PHPfrance
Modérateur PHPfrance | 2575 Messages

13 oct. 2008, 18:23

Bon, c'est la partie essentielle de ton script qui est fausse et qui est la boucle foreach qui parcourt la liste des objets $_FILES unploadés.

Voici la correction:
foreach ($_FILES['fichier'] as $fichier) { // $_FILES['fichier'] est un tableau d'input de type file
      // Traiter chaque occurence $fichier trouvée dans le tableau $_FILES['fichier']
     $size  = $fichier['size'];            // poids de l'image en octets  
     $tmp  = $fichier['tmp_name'];  // nom temporaire de l'upload
     $type = $fichier['type'];           // type de l'image

... la suite ...
En effet, $_FILES['fichier'] est le nom du tableau récupéré après le postage des champs de type file décrits dans ton HTML:
<label for="photo">Photo 1:</label><input type="file" name="fichier[]" />
<br />
<label for="photo_2">Photo 2:</label><input type="file" name="fichier[]" />
<br />
<label for="photo_3">Photo 3:</label><input type="file" name="fichier[]" />
<br />
<label for="photo_4">Photo 4:</label><input type="file" name="fichier[]" />
<br />
<label for="photo_5">Photo 5:</label><input type="file" name="fichier[]" />
<br />
<label for="photo_6">Photo 6:</label><input type="file" name="fichier[]" />
Modifié en dernier par sadeq le 13 oct. 2008, 22:38, modifié 2 fois.
--------//////----//---//----//////
-------//---//----//---//----//---//
------//////----//////-----//////
-----||--------||--||---||
Prendre le recul n'est pas une perte de temps.


ps: Affrontez moi dans l'arène

ViPHP
AB
ViPHP | 5818 Messages

13 oct. 2008, 20:57

Bon, c'est la partie essentielle de ton script qui est fausse et qui est la boucle foreach qui parcourt la liste des objets $_FILES unploadés.

Voici la correction:
foreach ($_FILES['fichier'] as $fichier) { // $_FILES['fichier'] est un tableau d'input de type file
      // Traiter chaque occurence $fichier trouvée dans le tableau $_FILES['fichier']
     $size  = $fichier['size'];            // poids de l'image en octets  
     $tmp  = $fichier['tmp_name'];  // nom temporaire de l'upload
     $type = $fichier['type'];           // type de l'image

... la suite ...
En effet, $_FILES['fichier'] est le nom du tableau récupéré après le postage des champs de type file décrits dans ton HTML:
<label for="photo">Photo 1:</label><input type="file" name="fichier[]" />
<br />
<label for="photo_2">Photo 2:</label><input type="file" name="fichier[]" />
<br />
<label for="photo_3">Photo 3:</label><input type="file" name="fichier[]" />
<br />
<label for="photo_4">Photo 4:</label><input type="file" name="fichier[]" />
<br />
<label for="photo_5">Photo 5:</label><input type="file" name="fichier[]" />
<br />
<label for="photo_6">Photo 6:</label><input type="file" name="fichier[]" />
Euh, tu es certain que c'est une correction ? :lol:

Moi je vois plutôt un problème dans cette correction (bug du genre Undefined index) alors que son code initial renvoyait les bonnes valeurs :
foreach ($_FILES['fichier']['name'] as $key => $value) {
$fichier=$value;//nom reel de l'image
$size=$_FILES['fichier']['size'][$key]; //poids de l'image en octets  
$tmp=$_FILES['fichier']['tmp_name'][$key];//nom temporaire de l'image (sur le serveur)  
$type=$_FILES['fichier']['type'][$key];//type de l'image



J'ai pas regardé tout le code en détail, mais il y a au moins une faute dans l'utilisation de la fonction move_uploaded_file() - il faut mettre le fichier temporaire comme paramètre (cf le tuto)

Modérateur PHPfrance
Modérateur PHPfrance | 2575 Messages

13 oct. 2008, 22:35

Heu, désolé je n'ai pas bien vu [$key]

oubliez mon post. :oops:
--------//////----//---//----//////
-------//---//----//---//----//---//
------//////----//////-----//////
-----||--------||--||---||
Prendre le recul n'est pas une perte de temps.


ps: Affrontez moi dans l'arène

Eléphant du PHP | 250 Messages

15 oct. 2008, 01:14

Bonsoir
merci à vous, mais rien n'y fait....ou presque; j'explique:
Plus de message d'erreur (merci AB !)...mais plus d'enregistrement du nom...et toujours pas de photo enregistrée dans le fichier-cible.... je ne sais même plus ce que je dois faire: :cry: ou :lol:
Ah si tout de même:
Warning: Cannot modify header information - headers already sent by (output started at
...............
Je crois que je vais faire plus simple...passer au tricot! :langue:

Edit: le même 15mn après..
Scrogneugneu...j'ai modifié/simplifié le code (merci beaucoup AB), et...la photo est bien enregistrée dans le fichier-cible et son nom_final dans la bdd ....mais (ah bin oui tout de même! :lol: ) j'ai 6 messages d'erreur: le 1er(uploadé une seule photo) pour me dire que l'image n'a pu être déplacée :shock: alors qu'elle l'a bien été...et les 5 autres (pas d'upload...) pour me dire que le fichier n'est pas conforme... :?
Mais je suis sur la bonne voie...merci encore
Note aux modos: je mettrai [Résolu] avec le bon code, ok?
"L'histoire, à l'image de toutes choses dans l'univers, semble avoir comme unique règle le côté ondulatoire."