We launched new forums in March 2019—join us there. In a hurry for help with your website? Get Help Now!
    • 2299
    • 62 Posts
    Bonjour,

    Je débute complètement avec MODx (davidm m’a construit le site sur lequel je travaille).

    J’aimerais faire un formulaire d’inscription à un service, avec insertion des informations recueillies dans une base de données. Je sais écrire tout cela en PHP/MySQL, mais j’aimerais savoir si certains d’entre vous ont déjà mis en place de tels formulaires sous MODx. Si oui, auriez-vous des conseils/astuces à partager ? Existe-t-il des plugins utiles ? J’ai bien vu que eForm existait, mais il semble surtout destiné à l’envoi des infos par mail... Est-il possible de l’utiliser tout de même ?

    Je suis pas un grand expert en en formulaires, et j’ai parfois l’impression que je pourrais optimiser mon code... Pour être plus rigoureux sur les données transmises, plus clair sur le code créé.

    Merci d’avance à toute personne qui pourra partager son expérience sur ce sujet.
      • 11975
      • 2,542 Posts
      Salut,

      tout dépend de ce que tu entends par inscription à un service.
      S’agit d’un accès à un espace privé, une inscription à une newsletter etc...

      Selon ton objectif tu peux recourir au snippet webloginPE.
      En ce qui concerne eform c’est une bonne base pour la création de formulaire.
      Il comprend une fonction de vérification des données intéressante et est très flexible avec son système d’événements.
      Pour enregistrer les données soumises, cherche dans le forum le post eform2db où la procèdure est expliquée.

      :-)
        Made with MODx : [url=http://www.copadel.com]copadel, fruits et l
        • 2299
        • 62 Posts
        Merci beaucoup pour la réponse.

        Pour le moment, je voudrais juste enregistrer les infos dans une base. Je verrais les histoires de login plus tard.

        Ce qui me séduit beaucoup dans eForm, c’est effectivement la vérification des données (que je gère très mal). Tu me confirmes donc que je peux l’utiliser même si je souhaite ensuite envoyer les infos dans une base, et non simplement dans un mail... C’est une très bonne nouvelle !

        Je vais aller voir le message que tu me conseilles pour comprendre comment ça marche.

        Merci encore.
          • 2299
          • 62 Posts
          Un détail que j’ai omis de préciser, et qui me semble de taille. Je voudrais insérer les données dans une base de données extérieures à MODx embarrassed

          Je dis parce que je vois que dans la discussion que tu évoques, il est souvent fait allusion à la DBAPI de MODx, et j’imagine donc que ce snippet est surtout destiné à faire des modifications dans la base de MODx... Je me trompe ?
            • 11975
            • 2,542 Posts
            Salut,

            tu peux tout à fait utiliser une base différente.
            Il te suffit d’initier une nvelle connection à ta base avec l’API de modx.


            :-)

            EX:

            $myconn = new DBAPI($host=’’,$dbase=’’, $uid=’’,$pwd=’’,$pre=NULL,$charset=’’);

            etc ...

            voir manager/includes/extenders/dbapi.mysql.class.inc.php
              Made with MODx : [url=http://www.copadel.com]copadel, fruits et l
              • 16732
              • 592 Posts
              En complément de la réponse d’Helio voici la page dédiée sur le wiki ici

              Concernant eForm, pour pouvoir insérer tes infos dans une table, il va te falloir créer le snippet qui réalise cette insertion.
              Ce snippet sera composé d’une fonction (voir la doc eForm dans le répertoire du snippet pour sa syntaxe) qui utilisera la DPAPI, comme mentionné plus haut, pour se connecter à la bonne base et réaliser l’insertion.

              Cette fonction sera appelée grâce à l’evènement eForm eFormOnBeforeMailSent dans l’appel du snippet eForm de ta page, ex: [[eForm? ... &eFormOnBeforeMailSent=`maFonctionQuiInsertLesInfos`]]

              Il ne faudra pas oublier d’appeler le snippet qui comporte la fonction AVANT l’appel du snippet eForm
                • 2299
                • 62 Posts
                heliotrope , laurentc : merci pour votre aide.

                Mais malheureusement, je bloque bien avant l’insertion dans une base. J’ai essayé de créer un simple formulaire d’envoi d’email, à partir des tutoriaux disponibles. Mais aucun email ne semble partir. Par contre, la vérification des champs vides se fait bien. Je ne sais pas bien où chercher...

                Le chunk qui affiche le formulaire : ContactForm
                <p class="error">[+validationmessage+]</p>
                 
                <form method="post" action="[~[*id*]~]" id="EmailForm" name="EmailForm">
                 
                	<fieldset>
                		<h2> Contact Us</h2>
                 
                		<input name="formid" type="hidden" value="ContactForm" />
                 
                		<label for="cfName">Your name:
                		<p><input name="name" id="cfName" class="text" type="text" eform="Your Name::1:" /></p></label>
                 
                		<label for="cfEmail">Your Email Address:
                		<p><input name="email" id="cfEmail" class="text" type="text" eform="Email Address:email:1" /></p> </label>
                 
                		<label for="cfRegarding">Regarding:
                		<p><input name="subject" id="cfRegarding" class="text" type="text" eform="Form Subject::1" /></p> </label>
                 
                		<label for="cfMessage">Message:
                		<p><textarea name="message" id="cfMessage" eform="Message:textarea:1"></textarea></p>
                		</label>
                 
                		<label> </label><p><input type="submit" name="contact" id="cfContact" class="button" value="Send This Message" /></p>
                 
                	</fieldset>
                 
                </form>


                Le chunk du message inséré dans l’email : ContactFormReport
                <p>This is a response sent by <b>[+name+]</b> using the feedback form on this website. The details of the message follow below:</p>
                 
                <p>Name: [+name+]</p>
                <p>Email: [+email+]</p>
                <p>Regarding: [+subject+]</p>
                <p>Comments:<br />[+message+]</p>


                L’appel du snippet :
                [!eForm? &formid=`ContactForm` &subject=`[+subject+]` &to=`[email protected]` &tpl=`ContactForm` &report=`ContactFormReport` !]
                  • 11975
                  • 2,542 Posts
                  Re,

                  bizarre que la validation des champs fonctionne.

                  Dans ton <form id="EmailForm" ...>, l’id doit correspondre au parametre &formid=``.
                  Or dans ton appel, &formid=`ContactForm`

                  Essaie en changeant dans l’appel avec &formid=`EmailForm`

                  :-)

                  EDIT: dans les versions précédentes d’eform on utilisait un champ hidden pour préciser l’id du form.
                  Peut etre as tu repris un exemple de la doc d’eform incluant le champ hidden puisqu’il est également présent dans ton chunk.
                    Made with MODx : [url=http://www.copadel.com]copadel, fruits et l
                    • 2299
                    • 62 Posts
                    Oui, j’avais cru comprendre que c’était obsolète, mais j’avais laissé le champ caché, dans le doute. Là, je l’ai supprimé et ai corrigé l’appel du snippet. Toujours pas d’email.

                    De quelle adresse est supposée partir l’email ?
                      • 11975
                      • 2,542 Posts
                      Tu peux activer le mode debug pour suivre l’éxécution du snippet &debug=`1`

                      Sinon en ce qui concerne l’adresse d’envoi elle est pamaétrable, par défaut, eform utilisera celle définie dans les paramètres de configuration du site (du moins je pense).

                      :-)

                        Made with MODx : [url=http://www.copadel.com]copadel, fruits et l