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

JavaScript Discussion :

Récupération $_FILES impossible sous IE6 et 7


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Inscrit en
    Mars 2008
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 10
    Par défaut Récupération $_FILES impossible sous IE6 et 7
    Bonjour,

    Je vous expose mon problème qui ne ce produit seulement sur Internet Explorer 6 et 7 mais pas sous Firefox 2 et 3.

    J'ai une page php avec des informations dans une cellule d'un tableau. En cliquant sur un bouton "modifier" je créer un formulaire en javascript (avec des document.createElement) qui remplace le contenu de la cellule par le formulaire créé.

    Dans ce formulaire j'ai un input type file, un input type hidden MAX_FILE_SIZE et dans ma balise form j'ai bien défini l'attribut enctype='multipart/form-data'

    Quand je submit mon formulaire, je fait un print_r($_FILES); .
    Sous Firefox cela me renvoi un tableau rempli, sous IE ça me renvoi Array(). Donc un tableau vide.

    Savez-vous d'où peut provenir mon problème ?

    Je vous remercie par avance pour l'aide que vous pourrez m'apportez.

  2. #2
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Par défaut
    De but en blanc, comme ça je vois pas... On peut voir le code source du formulaire et celui du script d'arrivée ?
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  3. #3
    Membre du Club
    Inscrit en
    Mars 2008
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 10
    Par défaut
    Salut,

    Pour le code source du formulaire (génération en javascript)

    J'explique rapidement, mon <form> existe deja donc je modifie juste les attributs comme besoin.

    Code Js =>
    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
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
     
    function chargerEch(p_s_donnees){
    	if(p_s_donnees.length >8) {
    		g_b_formEdit = true;
    		var l_a_tab = p_s_donnees.split('|');
    		var l_a_tmpEchID = l_a_tab[1].split(':');
    		var l_a_tmpEchRef = l_a_tab[2].split(':');
    		var l_a_tmpResId = l_a_tab[3].split(':');
    		var l_a_tmpResNom = l_a_tab[4].split(':');
     
    		var l_o_formAjout = document.getElementById('saisieEchRefDos');
    		var l_o_oldMaxFileSize = document.getElementById('MAX_FILE_SIZE');
    		l_o_formAjout.removeChild(l_o_oldMaxFileSize);
    		var l_o_spanRef = document.createElement('span');
    		l_o_spanRef.innerHTML='Référence : ';
    		//on stock l'input type hidden contenant la ref de l'art clt
    		var l_o_input = document.getElementById('refEch'+l_a_tmpEchID[1]);
     
    		// on récupère la td parent
    		var l_o_td = l_o_input.parentNode;
    		//supression de l'input hidden ref artc clt
    		l_o_td.removeChild(l_o_input);
    		// on vide le contenu de la td
    		l_o_td.innerHTML = "<input type='hidden' value='250000' name='MAX_FILE_SIZE' />";
    		//création input pour idEch
    		var l_o_inputIdEch = document.createElement('input');
    		l_o_inputIdEch.setAttribute('type','hidden');
    		l_o_inputIdEch.setAttribute('name','idEchEdit');
    		l_o_inputIdEch.setAttribute('id','idEchEdit');
    		l_o_inputIdEch.setAttribute('value',l_a_tmpEchID[1]);
    		//création input pour idImg
    		var l_o_inputIdImg = document.createElement('input');
    		l_o_inputIdImg.setAttribute('type','hidden');
    		l_o_inputIdImg.setAttribute('name','idRes');
    		l_o_inputIdImg.setAttribute('id','idRes');
    		l_o_inputIdImg.setAttribute('value',l_a_tmpResId[1]);
     
    		var l_o_brRef = document.createElement('br');
    		// affecte a la td l'input idEch
    		l_o_td.appendChild(l_o_inputIdEch);
    		// affecte a la td l'input idImg
    		l_o_td.appendChild(l_o_inputIdImg);
    		// affecte a la td du spanRef
    		l_o_td.appendChild(l_o_spanRef);
    		//input ref article client
    		l_o_inpurRef = document.createElement('input');
    		l_o_inpurRef.setAttribute('type','text');
    		l_o_inpurRef.setAttribute('maxlength','255');
    		l_o_inpurRef.setAttribute('class','inputRefEch');
    		l_o_inpurRef.setAttribute('id','refEch'+l_a_tmpEchID[1]);
    		l_o_inpurRef.setAttribute('name','refEch'+l_a_tmpEchID[1]);
    		l_o_inpurRef.setAttribute('value',l_a_tmpEchRef[1]);
    		// affecte a la td l'input 
    		l_o_td.appendChild(l_o_inpurRef);
    		//ajout à la td du br
    		l_o_td.appendChild(l_o_brRef);
    		// modifie le type de l'input hidden en type textpour permettre l'édition
     
    		//span image associée
    		var l_o_span = document.createElement('span');
    		l_o_span.innerHTML = 'Image associée : ';
    		//ajout à la td du span
    		l_o_td.appendChild(l_o_span);
    		//Ref de l'image associée
    		var l_o_spanImg = document.createElement('span');
    		if(l_a_tmpResNom[1]!=''){
    			l_o_spanImg.innerHTML=l_a_tmpResNom[1];
    		}else{
    			l_o_spanImg.innerHTML='Aucune image'
    		}
    		//ajout à la td du span
    		l_o_td.appendChild(l_o_spanImg);
    		//création input pour image
    		var l_o_inputImg = document.createElement('input');
    		l_o_inputImg.setAttribute('type','file');
    		l_o_inputImg.name ='imgEditEch';
    		//l_o_inputImg.setAttribute('id','imgEditEch');
     
    		//ajout à la td du input maxfilesize
    		//l_o_td.appendChild(l_o_inputMaxFile);
    		//ajout à la td du input image
    		l_o_td.appendChild(l_o_inputImg);
    		//création btn enregistrer
    		var l_o_btnEnr = document.createElement('input');
    		l_o_btnEnr.setAttribute('type','button');
    		l_o_btnEnr.setAttribute('name','modifier');
    		l_o_btnEnr.setAttribute('value','Enregistrer');
    		l_o_btnEnr.onclick = function (){traitementFormEdit(l_o_inpurRef);}
    		//création btn annuler
    		var l_o_btnAnn = document.createElement('input');
    		l_o_btnAnn.setAttribute('type','reset');
    		l_o_btnAnn.setAttribute('name','annuler');
    		l_o_btnAnn.setAttribute('value','Annuler');
    		var l_o_brBtn = document.createElement('br');
    		//ajout à la td du saut de ligne
    		l_o_td.appendChild(l_o_brBtn);
    		//ajout à la td du btn enregistrer
    		l_o_td.appendChild(l_o_btnEnr);
    		//ajout à la td du btn annuler
    		l_o_td.appendChild(l_o_btnAnn);
    		var l_o_form = document.getElementById('listeEchantillon');
    		//modife action du form pour submit edition  
    		l_o_form.setAttribute('action','index.php?action=echantillon&sousAction=editEch')
    		l_o_form.setAttribute('enctype','multipart/form-data');
    	}
    	return false;
    }
    Pour le code générer sous IE je peux pas car c'est fait par javascript et dans le code source les champs n'apparaissent pas.

  4. #4
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Par défaut
    Bonjour et bienvenue sur développez.
    l_o_td.innerHTML = "<input type='hidden' value='250000' name='MAX_FILE_SIZE' />"
    N'utilise pas innerHTML pour créé un élément mais utilise DOM comme les autres.
    La modification de l'attribut name est déprécié avec IE.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    if(document.all)//Pour IE
    {
    var l_o_inputIdEch = document.createElement('<input name="idEchEdit">');
    }
    else
    {
    var l_o_inputIdEch = document.createElement('input');
    l_o_inputIdEch.setAttribute('name','idEchEdit');
    }
    l_o_inputIdEch.setAttribute('type','hidden');
    ....
    Un code source dans la contribution qui pourra t'aider beaucoup pour la création d'une formulaire dynamique:
    http://www.developpez.net/forums/d53...ynamique-form/

  5. #5
    Membre du Club
    Inscrit en
    Mars 2008
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 10
    Par défaut
    Merci pour ta solution, mes éléments se créent bien avec un name (chose que je n'avais pas avant). Mais mon tableau $_FILES reste toujours vide.

  6. #6
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Par défaut
    Tu as tous modifier la création des éléments avec l'attribution de ses name?

  7. #7
    Membre du Club
    Inscrit en
    Mars 2008
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 10
    Par défaut
    Oui, tous mes éléments sont modifiés comme tu me la conseillé.

  8. #8
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    A quoi ressemble le formulaire final ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

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

Discussions similaires

  1. Récupération de Float sous D-XE2 + FB 2.5 Impossible
    Par lefju cabro dans le forum Bases de données
    Réponses: 16
    Dernier message: 19/04/2012, 17h40
  2. Impossible d'executer <applet> sous IE6.0
    Par vasilpapa dans le forum Applets
    Réponses: 3
    Dernier message: 29/05/2006, 20h11
  3. [Windows 2000 server] Téléchargement FTP impossible sous IE6
    Par o151181 dans le forum Windows Serveur
    Réponses: 6
    Dernier message: 24/11/2004, 18h00
  4. URGENT : Request.Form ne marche pas sous IE6
    Par Laurent Outan dans le forum ASP
    Réponses: 9
    Dernier message: 16/07/2004, 15h25

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