Partage
  • Partager sur Facebook
  • Partager sur Twitter

Formulaire Auto-complete Nodejs

    8 octobre 2021 à 15:33:46

    Bonjour, je suis en stage et je dois créer une sorte de logiciel sav en interface web. 

    J'utilise donc NodeJs expressJs et Mysql.

    je rencontre un problème car comme sur l'image si dessous , je veux que lorsque je tape un numéro client dans le champ, ça Cherche en même temps-le numéro client dans la table de donnée de client, et que sa me remplisse tout le champs client automatiquement liées a ce même numéro client.

    merci d'avance pour votre aide.

    • Partager sur Facebook
    • Partager sur Twitter
      8 octobre 2021 à 19:09:50

      utiliser l'événement onchange de l'élément en question https://www.w3schools.com/jsref/event_onchange.asp
      • Partager sur Facebook
      • Partager sur Twitter
        11 octobre 2021 à 8:58:03

        Merci bcp pour votre réponse, cela va m'aider en partie, mais je ne sais toujours par comment faire le gros de mon  problème,  pourrais-je avoir de l'aide supplémentaire
        • Partager sur Facebook
        • Partager sur Twitter
          11 octobre 2021 à 9:54:23

          Bonjour,

          Les inputs ont un attribut 'value' que tu peux utiliser pour définir la valeur de l'input :

          https://www.w3schools.com/jsref/prop_text_value.asp 

          Pour aller chercher les données, il faut utiliser XMLHttpRequest ou fetch :

          https://developer.mozilla.org/fr/docs/Web/API/XMLHttpRequest  

          https://developer.mozilla.org/fr/docs/Web/API/Fetch_API/Using_Fetch 

          • Partager sur Facebook
          • Partager sur Twitter
            12 octobre 2021 à 11:51:53

            je vous remercie amplement pour votre aide.

            je sais à présent comment le résoudre

            Cependant j'ai une nouvelle question ...

            Sauriez - vous comment est-ce que je pourrais mettre mon site qui est fait en nodejs en ligne 

            -
            Edité par BounaDiallo3 12 octobre 2021 à 11:53:01

            • Partager sur Facebook
            • Partager sur Twitter
              12 octobre 2021 à 13:21:03

              il faut que l'hébergeur supporte Node.js. Un comparatif chez presse-citron https://www.presse-citron.net/hebergeur/nodejs/ (ceux indiqués ne sont pas les seuls). Quelque soit l'hébergeur choisi, il y aura (en principe) une doc pour le déploiement sur leur plateforme
              • Partager sur Facebook
              • Partager sur Twitter
                10 novembre 2021 à 11:15:36

                Bonjour, je n'arrive toujours pas à résoudre mon problème initial.

                il faut enfaite que lorsque je tape un numéro dans le champs numéro client sans que je submit mon formulaire il faut qu'il cherche dans ma base de donnée le numéro associé et qu'il remplisse automatiquement les autres champs du client lié a ce même numéro client

                • Partager sur Facebook
                • Partager sur Twitter
                  10 novembre 2021 à 11:43:35

                  Bonjour comme il vous l'a dit bien que je ne maîtrise pas nodejs tout est une question de logique

                  vous devez separer ca en 2 temps,

                  vous utilisez l'event onchange du input, sur cette event vous placez une fonction qui recupere sa value

                  Vous vérifiez d'abord je ne sais pas si nodejs fournit un outil qui le fait ou en ajax si le num client existe dans votre table,

                  si oui vous récupérez en sql les données correspondant puis vous attribuer a chaque champs du formulaire via leur attribut value les données récupérer en bdd sinon vous ne faites rien l'utilisateur tape a la main ou vu que s'il ne se passe rien c'est que le numéro n'est pas trouvé en bdd vous pouvez directement mettre un message qui le signale.

                  Mais apres si votre question n'était pas comment procéder mais comment faire en node js attendons l'avie de quelqu'un qui maîtrise 

                  -
                  Edité par zvheer 10 novembre 2021 à 11:44:31

                  • Partager sur Facebook
                  • Partager sur Twitter

                  yasakani no magatama

                    10 novembre 2021 à 12:02:19

                    Pour compléter la réponse au dessus, dans le onchange, il faut faire la requête de récupération avec en paramètre le numéro de client saisi 

                    En principe, la requête ne renvoie de résultat que lorsque le numéro client est présent dans la base, et donc si le résultat de la requête n'est pas vide, mettre les valeurs récupérées par la requête dans les champs

                    • Partager sur Facebook
                    • Partager sur Twitter
                      10 novembre 2021 à 12:17:46

                      Pour ma part, je dirais que le onchange n'est déclenché que quand le champ perd le focus ( si je ne dis pas de bêtise ).

                      change - Référence Web API | MDN


                      Pour plus de confort utilisateur, j'essayerais plutôt avec un oninput, qui est déclenché à chaque caractère tapé ou supprimé. La callback devra alors dans un premier temps vérifier que la valeur correspond à un numéro valide ( value.length == 8 par exemple ), et si c'est le cas lancer la requête ajax.

                      Pour node, j'imagine qu'il faut créer une route spécifique pour traiter cette requête ajax, mais ça doit pas être super complexe.

                      • Partager sur Facebook
                      • Partager sur Twitter
                        30 novembre 2021 à 9:10:11

                        Bonjour j'ai fais une requête ajax je vous montre , 

                        <script type="text/javascript">
                                                $(function(req, res) {
                                                    $("#client").autocomplete({
                                                        name: 'num_client',
                                                        source: 'http://localhost:3000/autosearch?key=%QUERY',
                                                        limit: 4,
                                                        select: function ( event, ui ) {
                                                                $( "#num_client" ).val('12345');
                                                                $( "#client" ).val(rows.client);
                                                                $( "#adresse" ).val(ui.item.value);
                                                                $( "#code_postale" ).val(ui.item.value);
                                                                $( "#ville" ).val(ui.item.value);
                                                                $( "#telephone" ).val(ui.item.value);
                                                                $( "#mail" ).val(ui.item.value);
                        
                                                        }
                                                    });
                                                });
                                                </script>

                        qui renvoie sur cette route 

                        app.get('/autosearch', function(req, res) {
                        var mot = req.query.term;
                        con.query('SELECT * FROM client WHERE client LIKE "%' + req.query.term + '%"', function(err, rows, fields) {
                        if (err) throw err;
                        var data = [];
                        rows.forEach(function(rows) {
                        data.push(rows.client);
                        });
                        res.end(JSON.stringify(data), {rows:rows});
                        });
                        });

                        mais quand je fais ca le problème c'est que sa propose bien le client que j'ai recherché mais les données liés a ce client ne se mettent pas dans la réponse, en json

                        • Partager sur Facebook
                        • Partager sur Twitter

                        Formulaire Auto-complete Nodejs

                        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                        • Editeur
                        • Markdown