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

Bibliothèques & Frameworks Discussion :

Formulaire généré en PHP + Utilisation AJAX


Sujet :

Bibliothèques & Frameworks

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2008
    Messages : 4
    Par défaut Formulaire généré en PHP + Utilisation AJAX
    Bonjour à tous !
    J'ai regardé quelques tutos AJAX sur developpez.com, et j'ai mis en application tout ce que j'ai appris à ce sujet en créant un petit site.
    Après ça je me suis mis à un plus "gros" projet, en commençant par un formulaire d'inscription.
    J'utilise pour ce faire le framework prototype, en passant par un Ajax.Request lors de la validation du formulaire.
    Seulement j'ai un petit problème à rendre ceci utilisable plus largement que de taper le nom de chacun des ID utilisés dans les "parameters" du Ajax.Request.

    En gros, dans le formulaire, un code PHP constitué d'un mysql_query puis d'une boucle de mysql_fetch_array, génère un div avec un input checkbox, suivi de plusieurs inputs "radio", qui eux-mêmes affichents des inputs "text" suivant l'input "radio" sélectionné. (ça va, je n'explique pas trop mal ? )

    Ces inputs "radio" et "text", j'aimerais tous pouvoirs les envoyer suivant que le premier checkbox soit sélectionné ou pas ! Le problème c'est qu'en envoyant ceux-ci par la méthode Ajax.Request, je ne peux prévoir le nombre de fois que la boucle se fera (étant donné que tout dépend du nombre d'entrée dans la DB), et donc les noms d'ID que les inputs porteront...

    Par exemple, j'ai un div contenant un input checkbox, et s'il est sélectionné il affichera 3 inputs radios
    "option 1", "option 2", "option 3", qui eux-mêmes sélectionnés, afficheront chacuns 2 inputs text.
    Pour le code javascript, j'ai fait ça très "salement", en créant en php le code javascript, ajoutant à chaque boucle des event pour les inputs checkbox et radios, et en créant à chaque boucle une fonction qui affichera les bons inputs text, suivant l'input radio sélectionné !
    (pfiou...)

    Donc voilà en gros mon problème
    J'aimerais envoyer tous ces éléments en "parameters", sans pour autant les connaître à l'avance.

    Est-ce faisable ? J'espère que oui, sinon je vais devoir faire tout ça en form+php bien statique, et recharger la page si une chose a été oubliée (beurk)

    (Si besoin, je peux faire un screenshot du formulaire proprement dit ! Il n'est pas en ligne)

    Merci d'avance !

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2004
    Messages : 17
    Par défaut
    Si j'ai bien compris ta question tu peux utiliser la méthode serialize de prototype...appliquée à ton formulaire.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    new Ajax.Request('/some_url', {
      parameters: $('id_of_form_element').serialize(true)
    });

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

    Informations forums :
    Inscription : Juin 2008
    Messages : 4
    Par défaut
    C'est ce que je cherchais merci :p
    Maintenant j'ai un autre problème ! (joie)
    C'est qu'il n'apprécie apparemment pas de ne pas être le seul dans "parameters"...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    parameters: {validation: 2, pseudo: $F('pseudo'), pass: $F('pass1'), email: $F('email'), photo: parent.frames['cible'].nom_photo, $('form_lan').serialize()},
    Me donne une erreur avec Web developer ("missing: after property id"), et bloque le chargement de la page.
    Alors que
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    parameters: $('form_lan').serialize(),
    Fonctionne très bien...
    Est-ce normal ? Y a-t-il une solution à ce problème ? C'est assez dérangeant...

  4. #4
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par défaut
    Ben oui, tu passes un hash à parameters, il s'attend donc à trouver des paires
    Mais à la fin, tu as :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    , $('form_lan').serialize()}
    pas de value pour ce nom... donc erreur.
    C'est une erreur dans l'utilisation de ton serialize qui n'est pas bien placé !
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  5. #5
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par défaut
    Essaye plutôt :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $('form_lan').serialize(true).merge({validation: 2, pseudo: $F('pseudo'), pass: $F('pass1'), email: $F('email'), photo: parent.frames['cible'].nom_photo})
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  6. #6
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2008
    Messages : 4
    Par défaut
    Merci pour ton aide ! Mais j'ai toujours quelques ennuis...
    Ca fonctionne bien quand j'utilise le .serialize(), mais dès que je rajoute le .merge({autres paramètres}), il ne fait plus rien quand je clique...
    Et dès que j'enlève le ".merge(...)", tout refonctionne ! Mais j'ai besoin de ce .merge... Ou d'autre chose qui fonctionne

Discussions similaires

  1. [AJAX] Faire un formulaire d'upoad en utilisant ajax
    Par arnaudtchana dans le forum AJAX
    Réponses: 1
    Dernier message: 07/07/2014, 12h15
  2. [AJAX] Formulaire de news php en ajax
    Par nico44530 dans le forum AJAX
    Réponses: 5
    Dernier message: 25/06/2012, 11h02
  3. Réponses: 1
    Dernier message: 09/01/2010, 07h12
  4. [POO] validation des # de téléphone d'un formulaire généré en PHP
    Par goldor dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 17/04/2008, 22h16
  5. Formulaire généré en PHP
    Par Rekiem dans le forum Langage
    Réponses: 5
    Dernier message: 14/04/2006, 12h17

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