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 :

Erreur formulaire avec XMLHttpRequest


Sujet :

Langage PHP

  1. #1
    Candidat au Club
    Inscrit en
    Septembre 2005
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 6
    Points : 2
    Points
    2
    Par défaut Erreur formulaire avec XMLHttpRequest
    Bonjour,

    j'ai un problème avec un formulaire et notamment un champ de type "file". Ce formulaire est traité par une fonction javascript qui se charge de faire une XMLHttpRequest et qui envoit les données vers une page PHP. Sur ma page PHP, je n'ai pas de problème pour récupérer les données de type "text". En revanche, j'ai une erreur pour ma donnée de type "file". J'obtiens une erreur de type "Undefined index...".
    Voici des extraits de mon code :
    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
     
    // My form
    <form action="" method="" enctype="multipart/form-data">
    	<input type="hidden" name="max_file_size" value="1000000" />
      File : <input type="file" name="image" />
      Title : <input type="text" name="title" />
      <input type="submit" value="Add" onClick="sendRequest(this.form)" />
    </form>
     
    // sendRequest function
    function sendRequest(f) {
      var xmlRequest = null; 
      var url = null;
      var data = null
     
      if(window.XMLHttpRequest) // Firefox 
        xmlRequest = new XMLHttpRequest(); 
      else if(window.ActiveXObject) // Internet Explorer 
        xmlRequest = new ActiveXObject("Microsoft.XMLHTTP");  
     
    	var url = "doAddImage.php"
    	var image = f.elements["image"].value;
    	var title = f.elements["title"].value;
      data = "image="+image+"&title="+title;
     
    	document.getElementById("display").innerHTML = '<div>Loading...</div>';
     
      xmlRequest.open("POST", url , true); 
     
      xmlRequest.onreadystatechange = function() { 
        if (xmlRequest.readyState == 4) {
          var content = document.getElementById("display");
          content.innerHTML = xmlRequest.responseText;
        }
      }
      xmlRequest.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
      xmlRequest.send(data);
    }
     
    // doAddImage.php
    <?
      header('Content-type: text/html; charset=iso-8859-1');
     
      $title      = utf8_decode($_POST["title"]);
      $image      = $_FILES["image"]["tmp_name"];
      $image_name = $_FILES["image"]["name"];
    ?>
    L'erreur apparait pour les lignes suivantes
    $image = $_FILES["image"]["tmp_name"];
    $image_name = $_FILES["image"]["name"];

  2. #2
    Membre actif Avatar de MANU_2
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    417
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 417
    Points : 275
    Points
    275
    Par défaut
    Dans ta balise form :
    methode="POST"
    action enlève le


    Pour connaitre les :
    $image = $_FILES["image"]["tmp_name"];
    $image_name = $_FILES["image"]["name"];
    il faut tu ai déjà envoyé ton formulaire

    DONC

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    if (isset($_FILES["image"]["name"]))
    {
      $title      = utf8_decode($_POST["title"]);
      $image      = $_FILES["image"]["tmp_name"];
      $image_name = $_FILES["image"]["name"]; 
    }

  3. #3
    Candidat au Club
    Inscrit en
    Septembre 2005
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    J'ai essayé de mettre "POST" dans la méthode mais ça ne marche pas non plus.

    De plus, au moment où doAddImage.php est appelée, mon formulaire a été envoyé. D'ailleurs je récupère la variable $title sans aucun problème, preuve que le formulaire a été posté.

  4. #4
    Membre actif Avatar de MANU_2
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    417
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 417
    Points : 275
    Points
    275
    Par défaut
    <?
    header('Content-type: text/html; charset=iso-8859-1');

    $title = utf8_decode($_POST["title"]);
    $image = $_FILES["image"]["tmp_name"];
    $image_name = $_FILES["image"]["name"];
    ?>

    Ceci se trouve dans un fichier différent de ta form ?

  5. #5
    Candidat au Club
    Inscrit en
    Septembre 2005
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    Oui. Mon formulaire se trouve dans un fichier addImage.php. J'appelle ensuite la fonction sendRequest qui se trouve dans un fichier request.js et je traite le résultat dans un fichier doAddImage.php.

  6. #6
    Membre actif Avatar de MANU_2
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    417
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 417
    Points : 275
    Points
    275
    Par défaut
    Et avec ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <form action="doAddImage.php" method="POST" enctype="multipart/form-data">

  7. #7
    Candidat au Club
    Inscrit en
    Septembre 2005
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    Non ça ne marche pas non plus. Le fait de spécifier à la fois une action et un appel à une fonction qui crée une XMLHttpRequest provoque des problèmes (puisque l'action et la méthode d'envoi sont spécifier dans cette requête).

  8. #8
    Membre actif Avatar de MANU_2
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    417
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 417
    Points : 275
    Points
    275
    Par défaut
    Mais si tu ne précise pas où vont les données de ton formulaires ... normal que ça marche pas.

    Ton sendRequest(this.form) est censé faire quoi ?

  9. #9
    Candidat au Club
    Inscrit en
    Septembre 2005
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    Justement je précise où j'envoie mon formulaire dans ma fonction sendRequest(). C'est le principe des XMLHttpRequest. Ca correspond à ma variable url dans ma fonction javascript.

  10. #10
    Membre actif Avatar de MANU_2
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    417
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 417
    Points : 275
    Points
    275
    Par défaut
    Oui mais ton input est de type submit.

    Tu valide 2 fois ton formulaire :
    - par le submit
    - par ton sendRequest()

    Essaie de remplacer ton input submit par <a onclick=...>

Discussions similaires

  1. Problème d'envoi d'un formulaire avec xmlhttprequest
    Par lecra dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 12/10/2006, 17h35
  2. Réponses: 1
    Dernier message: 20/08/2006, 17h34
  3. Test sur formulaire avec liste des erreurs
    Par Nicos77 dans le forum Langage
    Réponses: 37
    Dernier message: 17/11/2005, 10h22
  4. Erreur sur l'ouverture d'un formulaire avec condition
    Par Virgile59 dans le forum Access
    Réponses: 4
    Dernier message: 08/11/2005, 14h16

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