Breezing Forms - Ecrire dans la base en sortie de formulaire

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

  • [Problème] Breezing Forms - Ecrire dans la base en sortie de formulaire

    bonjour à tous,

    Le titre dit environs tout... j'ai testé une écriture directe depuis phpmyadmin, j'ai récupéré la requête et je voudrais l'arranger pour pouvoir donc écrire dans un champ de ma base en sortie du formulaire, à l'acceptation du payement de l'utilisateur...

    ça devrait donner quelque chose comme ceci mais ne connaissant pas la syntaxe...

    UPDATE `ma_base`.`ma_table` SET `champ_a_modifier` = 'champ_a_modifier' + <valeur_d'un_champ_du_formulaire> WHERE `ma_table`.`id` =<num_id_utilisateur>;

    c'est surtout pour la récupération du champ de formulaire que je ne sais pas comment déclarer en php...

    en js on écrit ff_getElementByName('nom_du_champ').value mais en php ?

    merci de votre éclairage...

    adgenodux
    Dernière édition par adgenodux à 06/03/2013, 17h27

  • #2
    Re : [Problème] Breezing Forms - Ecrire dans la base en sortie de formulaire

    Salut
    je ferai comme ceci pour avoir un peu plus d'ordre.
    En fin de formulaire c'est du php.
    Code PHP:
    $var1 ff_getSubmit("nameduchamparecuperer");
    $id1 "numidutilisateur";
    $sql_update "update matable set champ1 = '$var1' where id = $id1";
    ff_query($sql_update); 
    Sinon ff_getSubmit si tu passes par un bouton submit recupere la valeur du champ qui se trouve dans la colonne "name"

    En esperant t'avoir aide et que j'ai pas tape a cote.

    ++
    Wismer

    Commentaire


    • #3
      Re : [Problème] Breezing Forms - Ecrire dans la base en sortie de formulaire

      mince... je n'ai plus d'argent sur mon compte PayPal fictif... je dois attendre un transfert...

      pfff ça c'est ballot sur un site de test...

      Commentaire


      • #4
        Re : [Problème] Breezing Forms - Ecrire dans la base en sortie de formulaire

        Bonjour,
        Envoyé par adgenodux Voir le message
        mince... je n'ai plus d'argent sur mon compte PayPal fictif... je dois attendre un transfert...

        pfff ça c'est ballot sur un site de test...
        Sur Paypal Sandbox, tu peux facilement te créer un deuxième compte acheteur de test
        Pour apprendre à construire votre site web avec Joomla 3 : Joomla3! Le Livre Pour Tous : http://cinnk.com/joomla/3/le-livre-pour-tous

        Référencement Joomla! 10 astuces pour référencer son site web https://cinnk.com/articles/referencement-joomla-10-astuces-pour-referencer-son-site-web

        Créez votre boutique en ligne avec Joomla! & HikaShop http://cinnk.com/boutique/livres/cre...la-et-hikashop

        Commentaire


        • #5
          Re : [Problème] Breezing Forms - Ecrire dans la base en sortie de formulaire

          pfff la gène... même pas pensé...

          Commentaire


          • #6
            Re : [Problème] Breezing Forms - Ecrire dans la base en sortie de formulaire

            bien, on progresse...

            je suis enfin parvenu à écrire dans ma base en plaçant ma pièce php dans "soumettre des pièces", "fin de soumission" :
            voici le code que j'ai composé sur base de celui de Wismer :

            $this->execPieceByName('ff_InitLib');
            $var1 = ff_getSubmit("mon_champ_a_recuperer");
            $id = JFactory::getUser()->get('id');
            $sql_update = "update ma_table set mon_champ = mon_champ + '$var1' where id = $id";
            ff_query($sql_update);
            le hic, c'est que ça m'écrit dans la base avant même la page d'identification Paypal, juste à la soumission donc... or rien ne dit que la transaction va être acceptée donc comment pourrais-je faire pour que cela se fasse sur l'acceptation de la transaction maintenant ?

            Commentaire


            • #7
              Re : [Problème] Breezing Forms - Ecrire dans la base en sortie de formulaire

              je pense que j'ai trouvé...

              c'est l'IPN qui communique avec le site pour les vérifications... il faut donc AUSSI configurer les "Préférences de Notification instantanée de paiement" sur son compte Paypal pour spécifier les pages vers lesquelles rediriger selon l'état de la transaction :

              - la page de retour sur acceptation
              - la page de retour sur refus
              - la page de retour pour l'IPN, c'est à dire un fichier dans lequel on donnera des instructions à réaliser selon l'état du paiement et dans mon cas, l'ajout d'une valeur à celle d'un champ de ma table...

              je mets ça en place et je vous dis quoi...

              Commentaire


              • #8
                Re : [Problème] Breezing Forms - Ecrire dans la base en sortie de formulaire

                je cale, besoin d'une idée...

                en fait c'est le ff_getSubmit("mon_champ") qui ne fonctionne qu'au moment du submit, je ne sais donc le placer que dans "soumettre des pièces"...

                ça ne convient donc pas puisque à ce moment là, l'utilisateur ne s'est même pas encore identifié sur Paypal donc pas question d'écrire dans la base maintenant...

                en fait c'est seulement quand paypal confirme que ça doit se faire, donc quand paypal renvoie sur la page 2 par ex pour le remerciement... voire sur la page IPN mais je me disais que BF le gérait puisqu'il y a une option à cocher pour l'IPN dans les options du formulaire... (peut-être voir de ce côté !)

                j'ai bien essayé de mettre sur ma page 2 (remerciement) un champ texte qui n'apparait pas en front, avec dans "valeur" mon jeu d'instructions pour écrire dans la base mais là aussi, le ff_getSubmit fait l'enragé...

                j'ai bien regardé dans toutes les pièces BF pour trouver une autre commande que ff_getsubmit pour récupérer ma valeur en SORTIE de formulaire et pas à la soumission mais je n'ai rien vu d'équivalent... et rien dans la doc consultée...

                quelqu'un aurait-il une idée ?

                Commentaire


                • #9
                  Re : [Problème] Breezing Forms - Ecrire dans la base en sortie de formulaire

                  tu as 2 parties dans le submit de BF.
                  Le begin sumit qui se fait au moment du clic

                  puis le "end submit" qui se fait quand toutes les actions du clic sont faites.
                  Pour un simple formulaire, on se pose la question de pourquoi mettre au debut et a la fin mais c'est peut etre par la qu'il faudrait aussi rechercher.

                  Sinon, il n'y a pas des exemples paypal livre en demo avec BF? je ne m'y suis pas encore penche mais j'ai cru l'avoir vu.

                  Commentaire


                  • #10
                    Re : [Problème] Breezing Forms - Ecrire dans la base en sortie de formulaire

                    Salut Wismer et merci pour ton message.

                    En fait, je cherche la commande qui me permettra de récupérer le choix de l'utilisateur pour l'écrire dans la db quand le paiement est accepté... donc ça ne peut pas être au 'submit' qu'il faut écrire puisque la transaction n'a pas encore eu lieu...

                    ff_getSubmit dit bien ce que ça veut dire, c-à-d "récupérer valeur à la soumission du formulaire", raison pour laquelle la fonction marche correctement quand je la mets dans "soumettre des pièces"

                    mais maintenant, quelle est la commande équivalente pour récupérer le choix de l'utilisateur quand on a la confirmation du paiement Paypal et donc en sortie de formulaire et non à la soumission ?

                    ff_getElementByName ne fonctionne pas non plus et j'ai regardé les pièces et exemples ainsi que de nombreux codes php pour essayer de rédiger une commande mais sans succès pour l'instant...

                    j'ai même essayé de mettre juste le ff_getSubmit à la soumission pour récupérer ma valeur dans une variable à réutiliser dans mon set d'instructions mis dans la section "après le formulaire" mais ma variable ne semble pas conserver la donnée d'une section à l'autre donc j'ai un message d'erreur "Undefined variable: var1"... si j'essaye de la déclarer "avant le formulaire" en 'global', pareil, comme si ma variable ne "supportait pas le voyage" depuis "avant le formulaire" ou depuis le submit jusqu'à mon set d'instructions dans "après le formulaire" alors que ma variable $id qui a donc l'id utilisateur depuis "avant le formulaire", est bien conservée celle-là... ?!?!?!

                    je m'y perds un peu là il faut dire...

                    Commentaire


                    • #11
                      Re : [Problème] Breezing Forms - Ecrire dans la base en sortie de formulaire

                      j'ai dans l'idée que l'IPN devrait être la clé du problème seulement je ne vois pas bien la relation entre l'IPN et Breezing Forms...

                      on a bien les infos de la transaction dans la "liste des enregistrements" qui montrent le code de confirmation et tout et tout mais au final, j'imagine que la case à cocher "IPN" n'est pas là juste pour l'historique et que cela doit provoquer une réaction de BF selon que le payement a été accepté ou pas mais comment gérer cette réaction ? où peut-on définir ce qu'il doit se passer selon l'état de la transaction ?

                      Commentaire


                      • #12
                        Re : [Problème] Breezing Forms - Ecrire dans la base en sortie de formulaire

                        je ne connais pas paypal, donc pas d'aide de mon cote pour ce soucis.

                        Par contre, la difference entre le begin submit et le end submit.

                        Dans le begin, tu te trouves encore en relation avec le formulaire donc toutes les fonctions comme ff_getSubmit qui interroge le formulaire fonctionne.

                        Dans le end submit, tu n'es plus en relation avec le formulaire, donc le ff_getSubmit ne marche plus mais les fonctions d'interrogation des bases fonctionnent.

                        Il n'y a pas de relation entre les 2 submits. Si tu veux faire passer une variable de l'une a l'autre, utilise une variable de session.

                        Code PHP:
                        Begin submit

                        $_SESSION
                        ["mavariable"] = ff_getSubmit('monchamp'); 
                        End Submit
                        Code PHP:
                        $mavariable $_SESSION["mavariable"]; 
                        Dernière édition par Wismer à 01/03/2013, 09h06

                        Commentaire


                        • #13
                          Re : [Problème] Breezing Forms - Ecrire dans la base en sortie de formulaire

                          Salut Wismer et merci pour l'idée...

                          Cependant, je crois quelle m'a permis de découvrir que les choses ne se passent pas dans l'ordre que je pensais, à savoir

                          1) pièces de début de formulaire
                          2) pièce de début de soumission
                          3) pièce de fin de soumission
                          4) pièce de fin de formulaire

                          (structure respectant les priorités comme les parenthèses par ex !)

                          mais plutôt

                          1) pièces de début de formulaire
                          2) pièce de fin de formulaire
                          3) pièce de début de soumission
                          4) pièce de fin de soumission

                          Il semble donc que je doive travailler avec l'ipn car c'est le seul moyen de réaliser une action en fonction du résultat de la transaction...

                          Merci donc pour ces précisions qui me permettent malgré tout d'avancer...

                          Commentaire


                          • #14
                            Re : [Problème] Breezing Forms - Ecrire dans la base en sortie de formulaire

                            Bonjour à tous,

                            Après une bonne période de Brainstorming, il faut en effet passer par l'IPN.
                            J'ai donc récupéré sur Paypal un code pour réceptionner l'IPN quand Paypal en envoie un.
                            Seulement, ce code est différent de ceux trouvés dans les tutos, souvent agés de plus de 3 ou 4 ans et Paypal ne peut pas savoir par avance ce qu'on veut faire après le payement donc s'est limité dans le code que voici :

                            <?php

                            $pp_hostname = "www.sandbox.paypal.com"; // Change to www.sandbox.paypal.com to test against sandbox


                            // read the post from PayPal system and add 'cmd'
                            $req = 'cmd=_notify-synch';

                            $tx_token = $_GET['tx'];
                            $auth_token = "Mon_Supermega_Token_Recupere_Sur_Le_Site_De_Paypa l";
                            $req .= "&tx=$tx_token&at=$auth_token";

                            $ch = curl_init();
                            curl_setopt($ch, CURLOPT_URL, "https://$pp_hostname/cgi-bin/webscr");
                            curl_setopt($ch, CURLOPT_POST, 1);
                            curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
                            curl_setopt($ch, CURLOPT_POSTFIELDS, $req);
                            curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 1);
                            //set cacert.pem verisign certificate path in curl using 'CURLOPT_CAINFO' field here,
                            //if your server does not bundled with default verisign certificates.
                            curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);
                            curl_setopt($ch, CURLOPT_HTTPHEADER, array("Host: $pp_hostname"));
                            $res = curl_exec($ch);
                            curl_close($ch);

                            if(!$res){
                            //HTTP ERROR
                            }else{
                            // parse the data
                            $lines = explode("\n", $res);
                            $keyarray = array();
                            if (strcmp ($lines[0], "SUCCESS") == 0) {
                            for ($i=1; $i<count($lines);$i++){
                            list($key,$val) = explode("=", $lines[$i]);
                            $keyarray[urldecode($key)] = urldecode($val);
                            }
                            // check the payment_status is Completed
                            // check that txn_id has not been previously processed
                            // check that receiver_email is your Primary PayPal email
                            // check that payment_amount/payment_currency are correct
                            // process payment
                            $firstname = $keyarray['first_name'];
                            $lastname = $keyarray['last_name'];
                            $itemname = $keyarray['item_name'];
                            $amount = $keyarray['payment_gross'];

                            echo ("<p><h3>Thank you for your purchase!</h3></p>");

                            echo ("<b>Payment Details</b><br>\n");
                            echo ("<li>Name: $firstname $lastname</li>\n");
                            echo ("<li>Item: $itemname</li>\n");
                            echo ("<li>Amount: $amount</li>\n");
                            echo ("");
                            }
                            else if (strcmp ($lines[0], "FAIL") == 0) {
                            // log for manual investigation
                            }
                            }

                            ?>
                            Mis à part le Token à préciser, comment remplir l'option suivante

                            //set cacert.pem verisign certificate path in curl using 'CURLOPT_CAINFO' field here,
                            et le bloc suivant :

                            }
                            // check the payment_status is Completed
                            // check that txn_id has not been previously processed
                            // check that receiver_email is your Primary PayPal email
                            // check that payment_amount/payment_currency are correct
                            // process payment
                            $firstname = $keyarray['first_name'];
                            $lastname = $keyarray['last_name'];
                            $itemname = $keyarray['item_name'];
                            $amount = $keyarray['payment_gross'];

                            echo ("<p><h3>Thank you for your purchase!</h3></p>");

                            echo ("<b>Payment Details</b><br>\n");
                            echo ("<li>Name: $firstname $lastname</li>\n");
                            echo ("<li>Item: $itemname</li>\n");
                            echo ("<li>Amount: $amount</li>\n");
                            echo ("");
                            }
                            else if (strcmp ($lines[0], "FAIL") == 0) {
                            // log for manual investigation
                            }
                            et enfin, puis-je mettre mon set d'instruction d'écriture dans la db tel que je l'avais mis dans le formulaire BF ou dois-je utiliser une syntaxe différente ?

                            Pour rappel, je souhaite donc récupérer le choix de l'utilisateur courant pour l'ajouter à un champ de la table de la db active.

                            Merci pour les précisions

                            Commentaire


                            • #15
                              Re : [Problème] Breezing Forms - Ecrire dans la base en sortie de formulaire

                              Bonjour,

                              Pour l'instant, plutôt que de passer par des variables et l'IPN, j'ai créé un champ caché dans la db avec Community Builder et qui me sert à stocker la valeur du choix de l'utilisateur en attendant la validation Paypal qui renverra sur la page de remerciement... sur cette page, je pensais donc utiliser un champ caché pour donner l'instruction d'écriture dans ma db étant donné que si Paypal renvoie sur la page, c'est que le payement est accepté...

                              Presque tout fonctionne... je récupère des infos de l'utilisateur par une pièce en "Début de formulaire", ce qui me permet de préremplir mes champs... je récupère le choix au submit, je stocke la valeur dans le champ temporaire que j'ai créé dans la db, Paypal fait sa popotte puis enfin on arrive sur la page de remerciement, j'ai mis un "echo" en fin de procédure pour vérifier qu'on passe bien dans la fonction, ce qui est le cas malheureusement mes écritures ne se font pas

                              voici ce que j'ai mis dans le "Value" de mon champ caché sur la page de remerciement :

                              <?php $this->execPieceByName('ff_InitLib'); $sql_update = "update ma_table set mon_champ_final = mon_champ_final + mon_champ_temporaire, mon_champ_temporaire = \"0\" where id = $id"; ff_query($sql_update); echo "!!! Ecriture faite dans la DB !!!"; ?>
                              Est-il donc possible de lire et écrire dans la base en donnant des instructions depuis le champ "Value" d'un champ caché de mon formulaire ?

                              Merci pour votre éclairage...
                              Dernière édition par adgenodux à 04/03/2013, 00h20

                              Commentaire

                              Annonce

                              Réduire
                              Aucune annonce pour le moment.

                              Partenaire de l'association

                              Réduire

                              Hébergeur Web PlanetHoster
                              Travaille ...
                              X