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 :

[AJAX] Remplir un formulaire sans recharger la page


Sujet :

JavaScript

  1. #1
    Membre à l'essai
    Inscrit en
    Mai 2007
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 10
    Points : 10
    Points
    10
    Par défaut [AJAX] Remplir un formulaire sans recharger la page
    Bonjour à tous et à toutes,j'espère trouver une solution à mon problème.
    Alors j'ai une page php qui contient un grand formulaire (form1),qui à son tour contient deux boutons + le dernier bouton de validation.
    Les deux boutons permettent de sélectionner deux div cachés:
    si par exemple l'utilisateur clique sur le bouton A,un <div id="A"> sera visible contenant des champs de texte rempli automatiquement depuis la base de donnée.
    Par contre si le bouton B est selectionné,un autre <div id="B"> sera visible et c'est la où ca se complique pour moi: car dans ce 2éme cas il ya en fait un sous-cas, car dans le div B il y a une liste déroulante qui est remplie depuis la base de donnée,et si à la séléction d'un élément dans cette liste,il faut que les champs de texte se remplissent automatiquement également depuis la base de donnée selon l'element choisi.
    exemple: Si je choisi un nom X dans la liste,les champ nom,prenom,adresse,ville,tel seront rempli automatiquement selon la requete "select * from coordonnee where nom='X'";
    Mais si je choisi "Autre" dans ce cas les champs en question restent vide pour l'ajout (j'arrive à gérer ce cas sans problème).
    Je pense que je dois utiliser AJAx (parce que je veux pas que ma page se recharge) seulement je ne connais pas AJAX,et j'ai lu beaucoup de tutoriaux le concernant,mais ca ne correspond pas toujours à ce que je cherche.
    Ma question est: comment faire? (je ne demande pas des codes je peux vous les fournir,j'ai besoin de comprendre comment pouvoir insérer ce que je veux dans la position que je veux depuis la page qui va me faire le traitement)
    Je sens dejà que je n'aurai pas de réponses

  2. #2
    Rédacteur
    Avatar de marcha
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2003
    Messages
    1 571
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 571
    Points : 2 351
    Points
    2 351
    Par défaut
    Salut,

    sur le principe il te faut déjà gérer le onchange de ton select pour appeler une fonction javascript lorsque l'utilisateur fait sont choix dans la liste.

    dans cette fonction, tu lances une requête ajax sur une page serveur qui reçoit le
    paramètre correspondant au choix de la liste, qui fait la requête sql et qui retourne
    le contenu de l'enregistrement (au format JSON ça serait surement pas mal dans
    ton cas)

    ensuite, la fonction de retour programmée sur l'objet xmlHttpRequest extrait le
    JSON puis modifie les champs du formulaire en conséquence.

    si tu as besoin de précision sur un point, n'hésite pas.

  3. #3
    Membre régulier
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2007
    Messages
    92
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Septembre 2007
    Messages : 92
    Points : 116
    Points
    116
    Par défaut
    Salut!

    Je doute que JSON te sois indispensable pour ça et si tu connais pas l'application, laisse tomber. Si tu ne connais pas bien Ajax, recherche sur google des tutoriels ou des parties de script que tu pourrais modifier pour faire un form inline.

    J'en ai un sur mon site qui met en loading après l'envoi du form et qui retourne le même formulaire après traitement des données et il fonctionne nickel... ça se présente comme ça:

    form.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
    <html>
    <head>
    <title>MonForm</title>
    ### Rel ton code ajax
    ### Rel ton code javascript
    </head>
    <body>
    <div id="max"> ### div modifié par Ajax
    <form method="post" onSubmit="var poststring=createstring(); javascript: ajax('datas.php', 'max', 'POST', 'poststring')">
    <input type="text" name="sample" id="sample">
    <input type="submit">
    </form>
    <script type="text/javascript">
     
    function createpoststring(){
    var sample = document.getElementById('sample').value
    var poststr = 'sample=' + encodeURI(sample);
    return poststring
    }
     
    </script>
    </div>
    datas.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
    ### Traitement des données
    ### Enregistrement SQL
    ### Données récupérées par SQL
     
    mysql_close();
     
    if($valide == "oui") ### exemple pour l'affichage du formulaire
    {
     
    ?>
     
    <html>
    <head>
    <title>Mon2eForm</title>
    ### Rel ton code ajax
    ### Rel ton code javascript
    </head>
    <body>
     
    <form method="post" onSubmit="var poststring=createstring(); javascript: ajax('datas.php', 'max', 'POST', 'poststring')">
    <input type="text" name="sample" id="sample" value="<?php echo"$ma_valeur"; ?>">
    <input type="submit">
    </form>
    <script type="text/javascript">
     
    function createpoststring(){
    var sample = document.getElementById('sample').value
    var poststr = 'sample=' + encodeURI(sample);
    return poststring
    }
     
    </script>
     
    <?php
     
    }
    Ce n'est qu'un exemple! Bon dév!

    ~w~

  4. #4
    Membre à l'essai
    Inscrit en
    Mai 2007
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 10
    Points : 10
    Points
    10
    Par défaut
    Merci pour vos réponses,finalement j'ai trouvé une alternative vue que ca me prendrai beaucoup de temps si je m'y met à ajax d'abord,alors en fait l'utilisateur choisira dans la liste déroulante son choix et ensuite continuer le formulaire puis valider,et c'est dans la page suivante que je récupérerai son choix avec les autres infos et les afficher ensuite dans la page d'affichage des infos depuis la BD.Au cas où il choisira "Autre" le formulaire caché sera donc afficher et il saisira les infos qui seront par la suite insérer dans la page suivante.
    C'est vrai qu'AJAX me sera très utile dans plusieurs cas donc je m'y met à AJAX.
    Merci à vous.

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

Discussions similaires

  1. Envoi de formulaire sans recharger la page
    Par argon dans le forum jQuery
    Réponses: 12
    Dernier message: 22/09/2014, 05h27
  2. Valider un formulaire sans recharger la page
    Par .Spirit dans le forum jQuery
    Réponses: 17
    Dernier message: 21/11/2010, 02h56
  3. Verifier valeur d'un formulaire sans recharger la page
    Par afrodje dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 04/02/2009, 16h17
  4. [AJAX] soumission d'un formulaire sans rechargement de page?
    Par coupolites dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 21/08/2008, 10h07
  5. [AJAX] Transmettre un formulaire sans rechargement de page
    Par micka39 dans le forum Général JavaScript
    Réponses: 10
    Dernier message: 21/11/2007, 12h20

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