Bonne utilisation "enctype" pour formulaire

Consultez la formation au référencement naturel Google de WebRankInfo / Ranking Metrics


passion
WRInaute accro
WRInaute accro
 
Messages: 2478
Inscription: Ven Jan 06, 2006 20:18

Bonne utilisation "enctype" pour formulaire

Message le Ven Aoû 25, 2006 15:29

Bonjour,
Je permets via un formulaire d'uploader sa photo puis j'en fais une redimension. Jusqu'à là, c'est parfait mais via l'interface de mon espace membre, mes abonnés peuvent modifier leur photo mais c'est là que ça veut pas marcher!!! :twisted:
Je me suis pris la tête à comprendre pourquoi ça marche pas et donc je me suis mis à éliminer temporairement diffèrentes parties du scripot pour localiser l'erreur et en faite, je me suis apperçu qu'en faisant un "echo" sur mes variables de sorties et bien, elles n'affichaient rien!!!
Donc j'en ai conclus que cela venait de mon formulaire de modification qui ne transmettait pas mes données en "POST.
Le voici:
Code: Tout sélectionner
<tr><form method="POST" action="modifier-annonce-listing2.php" enctype="multipart/form-data" name="formulairePhoto">
<td style="background-color:rgb(172,0,172);color:white;font-weight:bolder;"><center>MODIFICATION DE VOTRE PHOTO </center></td>
</tr>
<tr>
<td><center><label>Photo : (format .jpg, .png et .gif)<br/><input name='upfile' type='file' /></label></center></td>
</tr>
<tr>
   <td><center>L'image ne peut dépasser 500 Koctets.</center></td>
</tr>
<tr>
   <td><br/><center><input type='submit' name="boolform" value='Modifier votre photo' onclick='boolform.value=1' /></center></td>
</tr></form>

Je comprends pas car il est trés simple...mais est-ce un problème de "enctype" du fait que je ne fais qu'un upload de photo???
Merci

P.S: Je précise que lorsque je fais un essai de modif. ....je vais voir sur mon serveur et aucune photo n'a été chargé par ce biais!


Bacteries
WRInaute accro
WRInaute accro
 
Messages: 1333
Inscription: Jeu Mai 27, 2004 13:04

Message le Sam Aoû 26, 2006 9:40

Fais un
print_r($_FILES);
sur modifier-annonce-listing2.php.

(et les <center> c'est à éviter, tout comme le onclick='boolform.value=1' que tu devrais peut être remplacer par this.value)
D'ailleur je vois pas à quoi ça te sert de changer la valeur d'un bouton...

lefou
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 122
Inscription: Mar Juin 07, 2005 14:10

Message le Dim Aoû 27, 2006 9:50

Comme l'a signalé Bacteries, pas vraiment d'intérêt (à moins que !!!) de modifier la valeur du submit.

Ensuite comment récupères-tu le fichier exactement ??? Le transfert en méthode POST du FILE crée un fichier temporaire que tu peux déplacer tout simplement avec move_uploaded_file.

Lorsque tu essaies de lire les variables est-ce bien la variable type $_POST['upfile']['name'].

Sinon j'ai déjà eu un petit problème de ce genre : il y a bug lorsque le nom du fichier comporte une apostrophe. Pas très logique l'apostrophe dans le nom d'un fichier mais malheureusement Window est trop permissif !!!

En espérant avoir donné quelques infos qui t'aideront.

Petit Edit : en regardant à nouveau ton compte tes balises ne sont pas dans le bon ordre <tr><form> et tu as ensuite </tr></form> au lieu de </form></tr>. Mais je ne suis pas sûr que cela résolve ton problème. A voir.


Bacteries
WRInaute accro
WRInaute accro
 
Messages: 1333
Inscription: Jeu Mai 27, 2004 13:04

Message le Dim Aoû 27, 2006 15:22

Non mais à mon avis le problème vient de $_POST au lieu de $_FILES, enfin d'après la description de passion.

lefou
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 122
Inscription: Mar Juin 07, 2005 14:10

Message le Dim Aoû 27, 2006 21:31

Bacteries a écrit:Non mais à mon avis le problème vient de $_POST au lieu de $_FILES, enfin d'après la description de passion.


J'ai répondu trop vite. Merci Bacteries. En effet pour le input file c'est $_FILES et non $_POST.

A voir maintenant s'il n'a pas fait la même erreur que celle que je viens de faire.


passion
WRInaute accro
WRInaute accro
 
Messages: 2478
Inscription: Ven Jan 06, 2006 20:18

Message le Lun Aoû 28, 2006 19:09

Bonjour,
Excusez-moi pour cette absence d'informations complémentaires (occupé à reprendre mon site ) mais en tout cas, je vous remercie pour votre intérêt!

En faite, j'ai suivi votre conseil de faire un print $_FILES pour voir ce qu'il disait...donc voici:
Code: Tout sélectionner
Array ( [upfile] => Array ( [name] => essai3.jpg [type] => image/jpeg [tmp_name] => /tmp/phptmshwr [error] => 0 [size] => 22030 ) ) Erreur

Et sur cette exemple, j'ai vérifié si ma photo avait été chargé-->RIEN !!

Voici ma page qui reçoit les données:
Code: Tout sélectionner
$upfile=$_POST['upfile'];
   {
$message="";
$maxsize=500*1024; //Taille maximale des fichiers qui seront uploadés (en octet)
$ex1="jpg";
$ex2="JPG";
$ex3="png";
$ex4="PNG";
$ex5="gif";
$ex6="GIF";
//extraction de n caractères d'une chaine en partant de la droite
   function right($str,$nbr)
   {
      return substr($str,-$nbr);
   }
   
   //extraction de n caractères d'une chaine en partant de la gauche
   function left($str,$nbr)
   {
      return substr($str,0,$nbr);
   }

         if (!empty($upfile))
         {
            //vérifie que l'upload s'est bien passé
            if (is_uploaded_file($upfile))
            {
               //vérifie que le fichier est non vide
               if ($upfile_size>0)
               {   
                  //vérifie si la taille du fichier ne dépasse pas la limite
                  if ($upfile_size>$maxsize)
                  {
                     //fichier trop grand
                     $message="Le fichier a une taille supérieure à la limite autorisée!";
                  }
                  else
                  {
                     //taille correcte, vérification du type de fichier
                     $type=right($upfile_name,3);

                     if ($type=="$ex1" OR $type=="$ex2" OR $type=="$ex3" OR $type=="$ex4" OR $type=="$ex5" OR $type=="$ex6")
                     {
                        //on va chercher la date de la journée sous la forme annéemoisjourheureminuteseconde (ex : 200361015159)
                        $tmp=getdate();
                        $jour=$tmp['mday'];
                        $mois=$tmp['mon'];
                        $annee=$tmp['year'];
                        $h=$tmp['hours'];
                        $m=$tmp['minutes'];
                        $s=$tmp['seconds'];
                        $tout="$annee$mois$jour$h$m$s";
//on calcule le nombre de lettres avant le premier point
$res = strpos("$upfile_name",".");
//on extrait le nombre de lettre avant le point
                        $type2=left($upfile_name,$res);
  //sauvegarde du fichier uploadé
                           $savefile=$type2.".".$tout.".".$type;
                           move_uploaded_file($upfile, $savefile);
                           
$message="<img src=\"$savefile\" />";
$largeurDestination = 80;
$hauteurDestination = 80;
$im = ImageCreateTrueColor ($largeurDestination, $hauteurDestination) or die ("Erreur lors de la création de l'image"); 
  $source = ImageCreateFromJpeg($savefile);
                           
  $largeurSource = imagesx($source);
$hauteurSource = imagesy($source);
                           
                           ImageCopyResampled($im, $source, 0, 0, 0, 0, $largeurDestination, $hauteurDestination, $largeurSource, $hauteurSource);
   
$miniature = "mini_$savefile";
   ImageJpeg ($im, $miniature);
                        
   }
   else
   {
$message="Ce type de fichier n'est pas autorisé!";


                     }
                  }
               }
            }
            else
            {
               //erreur
               print_r($_FILES);
            }
         }

      
                  
                     if ($message!="")
                        {
                           echo "$message";
                        }
                     else
                        {
                           echo "Erreur";
                        }
                                    }

Voilà, merci!! :D


passion
WRInaute accro
WRInaute accro
 
Messages: 2478
Inscription: Ven Jan 06, 2006 20:18

Message le Lun Aoû 28, 2006 20:45

up :D

lefou
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 122
Inscription: Mar Juin 07, 2005 14:10

Message le Lun Aoû 28, 2006 23:12

Ce n'est pas $_POST mais $_FILES que tu dois utiliser soit :
$upfile=$_FILES['upfile'];

Ensuite tu peux récupérer différents paramètres de ta variable. Plus d'infos :
http://www.toutestfacile.com/php/cours/printables/PHPFacile.com-fileupload.php

morroko
Nouveau WRInaute
 
Messages: 1
Inscription: Mer Mai 13, 2009 9:34

Re: Bonne utilisation "enctype" pour formulaire

Message le Mer Mai 13, 2009 9:36

Salut,
J'ai actuellement le meme probleme que toi, as tu reussi a le resoudre?
Cordialement


Formation recommandée sur ce thème :

Formation Référencement naturel Google : apprenez une méthode efficace pour optimiser à fond le référencement naturel dans Google de façon durable... Formation animée par Olivier Duffez et Fabien Facériès, experts en référencement naturel.

Tous les détails sur le site Ranking Metrics : programme, prix, dates et lieux, inscription en ligne.

Lectures recommandées sur ce thème :



Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités