We launched new forums in March 2019—join us there. In a hurry for help with your website? Get Help Now!
    • 1092
    • 11 Posts
    Salut à tous,

    Nouvelle sur le forum et nouvelle sur modx aussi (ça fait beaucoup smiley).
    Je vous expose mon problème.

    mon site propose l’inscription à des séminaires :
    - les nouveaux séminaires sont créés à partir de tv (sujet, date, lieu, intervenant...)
    - via un formulaire on peut s’inscrire à ce formulaire (les informations des personnes sont enregistrées dans une table "contact" via eform2db)

    Je souhaite rattacher cette personne (qui sera présente dans la table contact à la validation du formulaire donc) à ce séminaire.
    Mon problème c’est que je voudrais que lors de la création d’une nouvelle page "séminaire" les valeurs des tv concernant ce séminaire soient enregistrées dans une table dédiée (seminaire par exemple, et pas seulement dans
    tmplvar_contentvalues), afin d’avoir un historique clair des séminaires et des participants.
    Il faudrait une sorte de @INSERT sql_query

    j’aurais donc à priori trois tables (contact, seminaire et participant_formulaire qui reprendrait les id des deux tables)

    La création du nouveau formulaire doit absolument passer par le manager (et non pas par phpmyadmin).

    est-ce possible? peut être y a t-il plus simple?
    j’ai beau avoir cherché à peu près partout, désolée par avance si la méthode a déjà été donnée
      • 11975
      • 2,542 Posts
      Salut,

      pas sur d’avoir tout saisi mais si tu dois pouvoir gérer les nouvelles entrées depuis le manager, la seule solution c’est de développer un module.

      :-)
        Made with MODx : [url=http://www.copadel.com]copadel, fruits et l
        • 1092
        • 11 Posts
        en résumé je souhaite enregistrer les valeurs entrées dans chaque tv dans la base de données : la tv "nom_seminaire" dans le champ "nom_seminaire" de la table séminaire etc.

        c’est ce que tu avais compris?

          • 11975
          • 2,542 Posts
          Oui wink

          Alors:
          Si tu veux que les valeurs soient stockées dans ta table seminaires lors de la saisie dans le manager via le formulaire de création de documents, tu peux utiliser les événements MODx via un plugin pour effectuer l’insert dans ta table.
          En revanche pour avoir accès à la table seminaire depuis le manager, cela ne peut être réalisé qu’avec un module.

          :-)
            Made with MODx : [url=http://www.copadel.com]copadel, fruits et l
            • 1092
            • 11 Posts
            Au final je n’ai plus besoin de faire ça (ouf? grin), mais ça me tarabuste franchement cette histoire d’évènements modx et de plugin.

            Si j’ai bien compris le truc, il faut créer un bout de code php qui récupère la valeur des tv et les insère dans la bd. Une sorte de eform2db avec les tv en gros. Je vois peut être trop simple.

            Déjà je ne sais pas trop s’il faut utiliser documentObject, getTemplateVar ou getfield pour récupérer la valeur de la tv, c’est un peu flou tout ça et aucun des trois ne marche.
            Dans les trois cas ça me fait une parse error, unexpected "<" dans le fichier document.parser.class.inc.php.

            Pour l’évènement système j’ai choisi celui qui me paraissait le plus simple : OnDocPublished.
            Mais du coup mon plugin sera lancé chaque fois qu’une page sera publiée, quelle qu’elle soit, et pas seulement les pages où l’on créé des séminaire (autrement dit même les pages qui n’ont pas les tv du séminaire). Ça n’est pas un problème?
              • 11975
              • 2,542 Posts
              Salut,

              pour les plugins, il ne faut pas ajouter les tags php <?php ?>

              tu peu ajouter une condition dans ton plugin pour limiter son champ d’application.

              :-)
                Made with MODx : [url=http://www.copadel.com]copadel, fruits et l
                • 1092
                • 11 Posts
                Oui c’est déjà beaucoup mieux sans ces tags.

                Une nouvelle ligne est créée dans la bd, mais la valeur de la tv n’est pas récupérée.
                J’essaye avec une variable de document de base, pagetitle, et ça ne marche toujours pas.

                j’ai simplement deux champs dans la table : id (autoincrémenté qui lui est bien créé à chaque nouvelle page publiée) et titrelgsem (qui reste vide).

                voici le plugin:

                	global $modx;
                	$dbTable = array(); 
                	
                	$tv= &$modx->documentObject['pagetitle'];
                	$dbTable[titrelgsem] = $tv;
                	$dbQuery = $modx->db->insert( $dbTable, 'seminaire' );
                
                	return true;


                Doit y avoir un problème avec les array peut être. ou alors documentObject n’est pas la bonne solution
                  • 11975
                  • 2,542 Posts
                  Je penche plutot pour un mauvais choix d’événement.
                  Fais une recherche dans les sources pour trouver l’endroit d’execution des plugins.
                  Cela te permettra de connaitre les valeurs à ta disposition à ce moment là de l’éxécution de MODx.

                  :-)
                    Made with MODx : [url=http://www.copadel.com]copadel, fruits et l
                    • 1092
                    • 11 Posts
                    Euh...

                    Fais une recherche dans les sources pour trouver l’endroit d’execution des plugins.

                    Kézako les sources?
                      • 11975
                      • 2,542 Posts
                      code source grin

                      Avec un editeur de texte tu as une fonctionnalité de recherche qui souvent propose une recherche dans de multiples fichiers.
                      tu sélectionnes le folder manager

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