Formulaire Chronoforms v5 champ pré rempli

Réduire
X
 
  • Filtrer
  • Heure
  • Afficher
Tout effacer
nouveaux messages

  • [Problème] Formulaire Chronoforms v5 champ pré rempli

    Bonjour,

    je me tortures le cerveau pour utiliser le DB read de Chronoforms :

    • j'utilise community Builder pour ajouter des champs supplémentaires à mes utilisateurs (exemple le champ telephone)
    • Maintenant dans mon formulaire Chronoforms, je désires récupérer les champs existants lors de la création du compte : nom, mail, telephone
    • dans Chronoforms, je place donc un DB read pour récupérer les champs existants.
      Je n'arrive à récupérer aucun champ de la table _comprofiler (table des users côté CB)

    La seule chose qui fonctionne en test est un DB read vers la table des users avec ce code :
    <?php
    $user =& JFactory::getUser();
    $form->data['user_id'] = $user->id;
    $form->data['mail'] = $user->email
    ?>
    Cela me permet de récupérer les champs nom et mail, mais pas ceux se trouvant dans une autre table.


    Comment faut-il paramétrer Chronoforms pour accéder au contenu d'une autre table que celle des users de base ?
    La question semble plutôt simple, mais je n'ai rien trouvé de clair pour un non-développeur.

    Merci par avance, Père Noêl Joomla
    Dernière édition par guyb à 02/01/2015, 09h50

  • #2
    Re : Formulaire Chronoforms v5 champ pré rempli

    Bonjour,

    Par exemple:
    Code PHP:
    <?php
    $user 
    JFactory::getUser() ;
    $uid $user->id ;
    $db JFactory::getDbo() ;
    $q "SELECT * FROM #__comprofiler WHERE user_id=$uid;
    $db->setQuery$q ) ;
    $result $db->getObject() ;
    // reste à utiliser les champs de l'objet... Par exemple
    $form->data['phone'] = $result->cb_phone ;
    Pas de demande de support par MP.
    S'il n'y a pas de solution, c'est qu'il n'y a pas de problème (Devise Shadok)

    Commentaire


    • #3
      Re : Formulaire Chronoforms v5 champ pré rempli

      Merci Jiss03

      mais ce n'est pas encore au point : les données de la table de CB ne remontent toujours pas.

      Le paramétrage de mon formulaire est coupé en 2 parties :

      1- un Custom code dans lequel j'ai mis le getUser actif (id=763) = ok

      <?php
      $user = JFactory::getUser() ;
      $form->data['mail'] = $user->email;
      $form->data['nomcomplet'] = $user->name;
      $form->data['uid'] = $user->id;

      ?>

      2- la partie DBRead dans laquelle je devrais récupérer les infos de la table des users de CB :

      <?php
      // recup valeur id connecté dans la variable pour la suite
      // $form->data['uid'] = $user->id;
      $db = JFactory::getDbo() ;
      $q = "SELECT * FROM #__comprofiler WHERE user_id=$uid" ;
      $db->setQuery( $q ) ;
      $result = $db->getObject() ;

      // return array("cb_tel" => $form->data("tel"));

      $form->data['tel'] = $result->cb_tel;
      $form->data['code1'] = "CODE1234";
      $form->data['nom'] = $user->firstname;
      ?>


      Le debugger de Chronoforms me donne ceci :
      Array
      (
      [mail] => bisenoir@gmail.com
      [nomcomplet] => Bise Prénom Bise Nom
      [uid] => 763
      [tel] =>
      [code1] => CODE1234
      [nom] =>
      [Data] => Array
      (
      [id] => 717
      [firstname] =>
      [lastname] =>
      [cb_tel] =>
      [cb_code1] =>
      )
      )
      Array
      (
      )


      Ce n'est pas très parlant pour moi ... Si ce n'est que je récupéres toujours le mail et le nom complet de la tables users, mais que la suite provenant de comprofiler reste vide.

      Le id=717 correspond au 1er enregistrement dans la table des users de Joomla, le souci est là.

      Je ne maitrise vraiment pas bien la gestion de l'array ou/et du Getdbo qu'il faut ...

      si tu avais quelques détails complémentaires, cela me dépannerai grandement (et le site que je dois terminer pour lundi prochain).

      Merci encore,
      Guy
      Dernière édition par guyb à 23/12/2014, 22h04

      Commentaire


      • #4
        Re : Formulaire Chronoforms v5 champ pré rempli

        Code PHP:
        $q "SELECT * FROM #__comprofiler WHERE user_id=$uid
        Dans le code que tu as posté, la variable $uid est indéfinie.

        Soit
        Code PHP:
        $q "SELECT * FROM #__comprofiler WHERE user_id=" $user->id 
        soit
        Code PHP:
        $uid 
        $q "SELECT * FROM #__comprofiler WHERE user_id=" $form->data['uid']  ; 
        si $form->data est déjà accessible et défini.
        Pas de demande de support par MP.
        S'il n'y a pas de solution, c'est qu'il n'y a pas de problème (Devise Shadok)

        Commentaire


        • #5
          Re : Formulaire Chronoforms v5 champ pré rempli

          Et bien je ne pointes toujours pas sur le bon enregistrement malgré cette modification

          dans le Custom Code, j'ai : $form->data['uid'] = $user->id;
          Cela définis bien la variable, non ?

          Chronoforms parle de returne array(), mais je ne sais pas comment le paramétrer.
          Et aussi, les lignes de code sont à placer dans le customCode, ou/et dans le DBRead, peut-être d'une manière spécifique pour Chronoforms, mais pour moi les explications ne sont pas très claires : https://www.chronoengine.com/faqs/72...t-in-ccv5.html

          Commentaire


          • #6
            Re : Formulaire Chronoforms v5 champ pré rempli

            N'utilisant pas Chronoforms, je me suis basé sur ton code pour indiquer comment intégrer des champs CB.
            La logique étant la même qu'avec des pièces Breezing Forms, cette requête fonctionne en général.

            Quand au array de Chronoforms, je n'ai aucune idée de ce à quoi il sert et encore moins du comment
            Pas de demande de support par MP.
            S'il n'y a pas de solution, c'est qu'il n'y a pas de problème (Devise Shadok)

            Commentaire


            • #7
              Re : Formulaire Chronoforms v5 champ pré rempli

              A tout hasard, n'étant pas marié avec Chronoforms, penses-tu que mon cas serait gérable avec un autre composant de formulaires ?

              • Les éléments de base sont saisis par l'admin du site dans le compte des membres (avec Cb pour les champs complémentaires)
              • un formulaire (fait avec le composant X ou Y) permet aux membres du site de s'inscrire à une sortie en remplissant des champs dont certains sont pré-remplis d'après les infos initiales de leur compte


              Si tu as une idée pour réaliser ceci d'une autre manière (autre composant), je suis preneur

              Merci encore,
              Guy

              Commentaire


              • #8
                Re : Formulaire Chronoforms v5 champ pré rempli

                tiens en passant encore, j'ai testé avec Breezingfoms, et le résultat est le même. Je vais trouver un autre hébergement que j'ai dans un coin pour voir comment cet autre prestataire réagit, parce que là je donnes ma langue au chat

                Commentaire


                • #9
                  Re : Formulaire Chronoforms v5 champ pré rempli

                  Si avec BF tu as le même problème, il est probable que ta requête ou ton code soit foireux quelque part. Avec BF, basculer en mode debug du formulaire va te raconter sa vie en détails, y compris avec les requêtes SQL complètes.
                  Pas de demande de support par MP.
                  S'il n'y a pas de solution, c'est qu'il n'y a pas de problème (Devise Shadok)

                  Commentaire


                  • #10
                    Re : Formulaire Chronoforms v5 champ pré rempli

                    Merci de m'avoir fait penser au debugger de Joomla
                    C'est là que j'ai vu que ce qui coinçait était la récupération de l'id du user : $membre = $my->id; ne fonctionne pas.
                    Le JFactory::getUser()->id; fonctionne à sa place

                    Voici le code qui lui me récupère tout, dans la partie "Pièces de formulaire" :
                    // Get the lead info fo the current user
                    $this->execPieceByName('ff_InitLib');
                    global $database, $record, $my;
                    $membre =JFactory::getUser()->id;
                    // $membre = $my->id;
                    $database->setQuery("
                    SELECT * FROM m3ugn_comprofiler WHERE m3ugn_comprofiler.user_id= '$membre'");
                    $row = $database->loadObjectList();
                    $record = $row[0];

                    et dans le champ valeur des champs à récupérer :
                    <?php global $record; return $record->firstname; ?>
                    pour le champ prénom par exemple.

                    Je ne maitrise pas bien le côté API avec les fonctions, méthodes, j'espère que le code au final n'est pas un mélange apocalyptique ....

                    Sur ce, prépares bien ton smoking et fais la fête, pour une fois sans modération !
                    Guy

                    Commentaire


                    • #11
                      Re : Formulaire Chronoforms v5 champ pré rempli

                      Tant qu'à faire les choses proprement
                      Code PHP:
                      global $record ;
                      $this->execPieceByName('ff_InitLib');
                      $db JFactory::getDbo() ;
                      $membre =JFactory::getUser()->id ;
                      $db->setQuery("SELECT * FROM #__comprofiler WHERE user_id= '$membre'") ;
                      $row $db->loadObject();
                       
                      $record $row[0]; 
                      et il ne te reste plus qu'à peupler tes champs selon la méthode décrite
                      Pas de demande de support par MP.
                      S'il n'y a pas de solution, c'est qu'il n'y a pas de problème (Devise Shadok)

                      Commentaire


                      • #12
                        Re : Formulaire Chronoforms v5 champ pré rempli

                        un truc que j aimerais comprendre
                        tu sort ce code php d'ou et tu l as mis ou ds ton formulaire ?
                        Code:
                        <?php
                        // recup valeur id connecté dans la variable pour la suite
                        // $form->data['uid'] = $user->id;
                        $db = JFactory::getDbo() ;
                        $q = "SELECT * FROM #__comprofiler WHERE user_id=$uid" ;
                        $db->setQuery( $q ) ;
                        $result = $db->getObject() ;
                        
                        // return array("cb_tel" => $form->data("tel"));
                        
                        $form->data['tel'] = $result->cb_tel;
                        $form->data['code1'] = "CODE1234";
                        $form->data['nom'] = $user->firstname;
                        ?>
                        parceque normalement, tu as juste des champs a remplir ds ton db read et rien d autre.

                        Commentaire

                        Annonce

                        Réduire
                        Aucune annonce pour le moment.

                        Partenaire de l'association

                        Réduire

                        Hébergeur Web PlanetHoster
                        Travaille ...
                        X