IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

$_FILES introuvable après envoi d'un formulaire [PHP 4]


Sujet :

Langage PHP

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 4
    Points : 5
    Points
    5
    Par défaut $_FILES introuvable après envoi d'un formulaire
    Bonjour à tout le monde,

    J'ai un petit problème, qui je suppose est tout bête! Mais qui me prend la tête depuis un moment

    J'ai un formulaire avec la structure suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
     <form method="post" name="form1" action="upload.php?id=<?php echo $_GET['id'];  ?>">
     
    //Plein de champs qui fonctionne bien
    <input name="img" type="file" id="img" size="30" />
    <input name="image_actu" type="hidden" id="image_actu" value="<?php echo $tab_prod['image']; ?>" />
     
    <input name="submit" class="submit" type="submit" value="submit" />
    </form>
    A savoir que le $_GET['id'] de la balise form ainsi que $tab_prod['image'] (d'une requète préalable) renvoient bien les bonnes valeurs.

    On poste et on arrive donc sur upload.php?id=293

    Voila le code de la page upload.php :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    if(is_uploaded_file($_FILES['image']['tmp_name'])){
    		$dossier = '../upload/';
    		$fichier = basename($_FILES['image']['tmp_name']);
    		$taille_maxi = 100000;
    		$taille = filesize($_FILES['image']['tmp_name']);
    		$extensions = array('.png', '.gif', '.jpg', '.jpeg');
    		$extension = strrchr($_FILES['image']['name'], '.'); 
    		//Début des vérifications de sécurité...
    		if(!in_array($extension, $extensions)) //Si l'extension n'est pas dans le tableau
    		{
    			 $erreur = 'Tu dois uploader un fichier de type png, gif, jpg, jpeg, txt ou doc...';
    		}
    		if($taille>$taille_maxi)
    		{
    			 $erreur = 'Le fichier est twop gwos...';
    		}
    		if(!isset($erreur)) //S'il n'y a pas d'erreur, on upload
    		{
    			 //On formate le nom du fichier ici...
    			 $fichier = strtr($fichier, 
    				  'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ', 
    				  'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');
    			 $fichier = preg_replace('/([^.a-z0-9]+)/i', '-', $fichier);
    			 if(move_uploaded_file($_FILES['image']['tmp_name'], $dossier . $fichier)) //Si la fonction renvoie TRUE, c'est que ça a fonctionné...
    			 {
    				  echo 'GG, Upload effectué avec succès !<br />';
    			 }
    			 else //Sinon (la fonction renvoie FALSE).
    			 {
    				  echo 'Echec de l\'upload :( !';
    			 }
    		}
    		else
    		{
    			 echo $erreur;
    		}	
    	}else{
    	$fichier = $_POST['image_actu'] ;
     
    	}
     
    if(!isset($erreur)){
    			$req = sprintf("UPDATE catalogue SET categ='%s', gamme='%s', gamme2='%s', ref='%s', titre='%s', texte='%s', image='%s' WHERE id=%s", $_POST['categ'], $_POST['gamme'], $_POST['gamme2'], $_POST['ref'], $_POST['titre'], $_POST['texte'], $fichier, $_GET['id'])or die (mysql_error());
    			echo $req;
    			$req2 = mysql_query($req);
    			if(!$req2){
    				echo 'Erreur MySQL';
    			}else{
    				/*echo "	<script language='JavaScript'> ";
    				print ("parent.window.location='produits_liste2.php'");
    				echo "	</script> ";*/
    				echo 'ok';
    			}
     
    		}

    Le echo de ma requète donne :

    UPDATE catalogue SET categ='10', gamme='3', gamme2='44', ref='C-80', titre='A completer', texte='texte hyper long', image='c80.jpg' WHERE id=293

    où image=c80.jpg correspond à $_POST['image_actu']. (l'image que j'essaye d'insérer à un autre nom).

    En faite, il ne rentre pas dans ma boucle :
    if(is_uploaded_file($_FILES['image']['tmp_name'])){

    J'ai essayé en testant si cette variable était vide, si elle existait...pas de meilleurs résultat.

    Une idée??

    Merciiiiii!

  2. #2
    Membre émérite
    Avatar de Seb33300
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2007
    Messages
    1 564
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Thaïlande

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 564
    Points : 2 399
    Points
    2 399
    Par défaut
    Il faut rajouter enctype à ton form :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <form method="post" name="form1" action="upload.php?id=<?php echo $_GET['id'];  ?>" enctype="multipart/form-data">
    http://antoine-herault.developpez.co...ls/php/upload/
    Zend Certified PHP Engineer

    « Crois-tu comprendre le monde juste en matant le 20H Ou connaître l'histoire en ayant lu que l'angle des vainqueurs ? » Keny Arkana

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 4
    Points : 5
    Points
    5
    Par défaut
    Ah oui, tout bête, en effet Oo

    Merci!!

  4. #4
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    pourquoi PHP 4, ton hébergeur ne propose pas PHP 5 ?

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 5
    Dernier message: 01/12/2011, 12h03
  2. Rafraichir DIV après envoi d'un formulaire
    Par Djaydjay13 dans le forum Général JavaScript
    Réponses: 12
    Dernier message: 16/07/2010, 12h48
  3. Redirection vers une Action après envoi d'un formulaire
    Par muad'dib dans le forum Struts 2
    Réponses: 4
    Dernier message: 05/06/2009, 14h48
  4. redirection apres envoi d'un formulaire
    Par roy51 dans le forum Langage
    Réponses: 10
    Dernier message: 05/05/2008, 08h35

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo