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

AJAX Discussion :

[AJAX] AJAX, PHP/SQL et Formulaire


Sujet :

AJAX

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 21
    Points : 11
    Points
    11
    Par défaut [AJAX] AJAX, PHP/SQL et Formulaire
    Bonjour à tous,

    Voilà je suis débutant avec AJAX, et je rencontre un problème dont je ne trouve pas la solution

    J'ai une page avec un formulaire de rédaction en method=post, pour insérer des données dans une base SQL.

    Dans cette page de formulaire, j'inclus la page php insertion.php, qui traîte les données pour les insérer dans ma base lorsque le bouton submit est cliqué.

    Au chargement de ma page de rédaction, je fais appelle à une fonction AJAX asynchrone, qui demande à une autre page php de me renvoyer des données, que j'insère dans un div avec :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    document.getElementById(id).innerHTML = req.responseText;
    Cette autre page php dont ajax récupère les données, écrit des images et des input :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    for ($i=0; $i < $nbrFiles; $i++ )
     {
             echo $files[$i]; 
             echo $input[$i];
     }
    où $files[$i] est un array d'images, et $input est un array de différents input.

    Donc dans ma page de rédaction, il n'y a pas de problème pour l'affichage, AJAX injecte bien les images et les input dans le div cible.

    Mais lorsque l'on soumet le formulaire, ma page insertion.php ne voit pas les $_POST[] qui correspondent aux input qui ont été injectés par la fonction AJAX dans le div du formulaire.

    J'ai entendu parlé pour ajax de la méthode send, mais je ne sais pas où et comment je pourrais appeler cette méthode, à quelle page l'envoyer, pour ce que lorsqu'on soumet le formulaire, la page insertion.php soit capable de voir les $_POST[] qui correspondent aux input injectés par la fonction AJAX

    Merci de votre aide

  2. #2
    Membre expérimenté Avatar de DoubleU
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 106
    Points : 1 388
    Points
    1 388
    Par défaut
    Tu utilises quoi comme navigateur?

    Car l'ajout dynamique d'élément de formulaire via innerHTML pose des problèmes (notamment sous IE) pour récupérer les valeurs coté serveur.

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 21
    Points : 11
    Points
    11
    Par défaut
    Citation Envoyé par DoubleU Voir le message
    Tu utilises quoi comme navigateur?

    Car l'ajout dynamique d'élément de formulaire via innerHTML pose des problèmes (notamment sous IE) pour récupérer les valeurs coté serveur.
    J'utilise firefox, mais ça ne marche sur aucun navigateur, que ce soit firefox 3.0.9, 3.1b, ou bien IE 7 ou 8.

    Je pense tout simplement que ma page insertion.php, ne voit pas les <input> qui ont été injecté dans le <div> qui se trouve au sein du formulaire.

    C'est comme si ces input n'étaient pas dans le formulaire

  4. #4
    Membre expérimenté Avatar de DoubleU
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 106
    Points : 1 388
    Points
    1 388
    Par défaut
    Essaie de les ajouter via le DOM et non via innerHTML (si c'est ce que tu faisais)

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 21
    Points : 11
    Points
    11
    Par défaut
    Citation Envoyé par DoubleU Voir le message
    Essaie de les ajouter via le DOM et non via innerHTML (si c'est ce que tu faisais)
    Je ne connais pas grand chose en AJAX...

    Quel pourrait être l'équivalent en DOM ?

    J'ai trouvé un exemple comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    longueurCible = document.getElementById("textDiv").firstChild.length;
    document.getElementById("textDiv").firstChild.replaceData(0, longueurCible, "Texte de remplacement");
    Mais ça ne marche pas...

  6. #6
    Membre expérimenté Avatar de DoubleU
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 106
    Points : 1 388
    Points
    1 388
    Par défaut
    Ta requete te retourne quoi comme chaine, j'ai du mal a me rendre compte?

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 21
    Points : 11
    Points
    11
    Par défaut
    Citation Envoyé par DoubleU Voir le message
    Ta requete te retourne quoi comme chaine, j'ai du mal a me rendre compte?
    bah ma requête c'est le résultat d'une autre page php (principe de l'ajax quoi).

    Ma fonction est lancée, elle appelle une page php, cette page php fait son boulot, elle fait des echo d'input de type hidden et d'images, selon ce qu'elle a trouvé.

    Ensuite, ajax récupère le résultat de cette page, donc les echo des images et des input, et l'injecte dans un <div> qui est dans le formulaire sur la page de rédaction.

    Au moment de la soumission, les input ne sont pas trouvés par la page insertion.php qui check si elle trouve ces input... c'est comme s'ils n'étaient pas dans le formulaire

  8. #8
    Membre expérimenté Avatar de DoubleU
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 106
    Points : 1 388
    Points
    1 388
    Par défaut
    bah ma requête c'est le résultat d'une autre page php (principe de l'ajax quoi).
    Le principe d'ajax, techniquement, c'est juste d'envoyer une requete HTTP depuis le client vers le serveur.

    Ce que tu devrais faire, c'est ne pas formater le retour de ta requete pour faire simplement un innerHTML du résultat mais plutot renvoyer les informations nécessaires pour recréer les éléments a ajouter via le DOM.

    Attention, sous IE pour que tes éléments puissent être reconnus lors de la soumission du formulaire, il faut que tu crées les éléments de cette facon:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var inp = document.createElement("<input name='foo'>")
    alors que sous FF c'est
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    var inp = document.createElement("input");
    inp.name = "foo";

Discussions similaires

  1. Utiliser Ajax et PHP SQL pour afficher des images BDD
    Par kaspar Knox dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 27/02/2016, 18h48
  2. [AJAX] ajax et php upload
    Par roduce dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 03/01/2008, 14h04
  3. [AJAX] AJAX: effet de chargement sur formulaires
    Par nabab dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 21/09/2007, 18h25
  4. [AJAX] Ajax et PHP - Récupérer plusieurs champs ?
    Par stephnane dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 19/09/2007, 22h09
  5. [AJAX] ajax et requete sql en php
    Par digger dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 20/03/2007, 11h24

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