Variable dans un formulaire

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

  • [RÉGLÉ] Variable dans un formulaire

    Bonjour,
    J'ai créé une variable, que je dois ensuite récupérer dans un formulaire. (Qui est lui même dans le fichier php)

    Code PHP:
    $currentTime JFactory::getDate()->format('YmdHis');

    //Le formulaire
    $form '<form action="'.$action_url.'" method="post">';
    $form .= '<input type="text" name="vads_action_mode" value="'."INTERACTIVE".'"/>';
    $form .= '<input type="text" name="vads_trans_date" value="'.$currentTime.'"/>';
    $form .= '<input type="submit" name="envoyer" value="Envoyer"/>';
    $form .= '</form>';
    echo 
    $form
    Mon input <input type="text" name="vads_trans_date" value="'.$currentTime.'"/> reste désespérément vide.

    Comment feriez-vous pour que la variable soit en value de l'input ?

    Cordialement.

    Eric
    Dernière édition par Agrepe à 22/05/2018, 17h36

  • #2
    Bonsoir,
    Peut être parce que currenttime n'existe pas en php
    PHP is a popular general-purpose scripting language that powers everything from your blog to the most popular websites in the world.

    Cordialement,
    Chabi01 - http://www.xlformation.com

    Commentaire


    • #3
      Bonjour,
      Si si, cela fonctionne bien.
      Voir la doc JOOMLA. https://docs.joomla.org/How_to_use_JDate/fr
      JFactory::getDate()

      Cordialement.

      Eric


      .

      Commentaire


      • #4
        Bonjour

        [Modo]Le lien avec AllEvents ? Je déplace le post et, sauf erreur, il t'est souvent demandé de vérifier où tu postes; merci d'en tenir compte...[/Modo]
        Christophe (cavo789)
        Mon blog, on y parle Docker, PHP, WSL, Markdown et plein d'autres choses : https://www.avonture.be
        Logiciel gratuit de scan antivirus : https://github.com/cavo789/aesecure_quickscan (plus de 45.000 virus détectés, 700.000 fichiers sur liste blanche)​

        Commentaire


        • #5
          Envoyé par Agrepe Voir le message
          ...
          Mon input <input type="text" name="vads_trans_date" value="'.$currentTime.'"/> reste désespérément vide.
          ...
          Ton code parait bon.
          Tu as vérifié le html généré ?
          A tous les utilisateurs de Joomla du très Grand Est de la France et du Jura suisse
          Rejoignez le Joomla Users Groupe Alsace...
          roland_d_alsace va-t-il devenir roland_du_grand_est ?

          Commentaire


          • #6
            Bonjour Roland,
            Pour préciser, je fais une passerelle de paiement pour une l'extension VIK Restaurant.
            J'ai suivi l'exemple fourni ainsi que la documentation. Je récupère bien toutes les valeurs nécessaires au paiement.
            Mais je n'arrive pas à les exploiter, le formulaire qui a en charge d'envoyer les informations vers le paiement reste vite.

            Pour répondre, oui j'ai bien vérifié, le contenu est correct quand je fais :
            echo $currentTime;
            En fin du fichier php.
            Mais j'ai remarqué une chose qui fait que ce n'est pas là le souci.


            Je viens de remarquer que dès que je déplace l'echo juste devant le formulaire, la variable n'est plus vue.
            De la même manière dans mon fichier j'ai fait: (Par exemple, ici pour formater une valeur)

            Code HTML:
            //Formater le total sans virgule
            $total = number_format($this->order_info['total_to_pay'] * 100, 0, '', '');
            //var_dump ($total);
            echo $total;
            Dans ce cas, la valeur s'affiche correctement.

            Mais dès que je place cela au niveau du formulaire, tout reste vide.

            Voici mon fichier:
            Code PHP:
            // No direct access to this file
            defined('_JEXEC') OR die('Restricted Area');
            // Date de la transaction formatée. Exemple: 20170129130025
            $currentTime JFactory::getDate()->format('YmdHis');

            // Variables "fixes"
            $mode "INTERACTIVE";
            $idmarchand "00000003";
            $key"0000000000000042";
            $version "V2";
            $config "SINGLE";
            $action "PAYMENT";
            $currency ="978";


            /**
             * An example payment gateway integration for VikRestaurants.
             *
             * [USER="57695"]since[/USER] 1.0
             */
            class VikRestaurantsPayment
            {
                
            /**
                 * The order information needed to complete the payment process.
                 *
                 * @var array
                 */
                
            private $order_info;

                
            /*
                 * The payment configuration.
                 *
                 * @var array
                 */
                
            private $params;
                
            // var_dump($params);

                /**
                 * Return the fields that should be filled in from the details of the payment.
                 *
                 * @return     array     The fields array.
                 */
                
            public static function getAdminParameters()
                {
                    
            //$logo_img = JURI::root().'administrator/components/com_vikrestaurants/payments/mypay/mypay-logo.jpg';
                    
            $logo_img JURI::root().'components/com_vikrestaurants/assets/media/508obtenir-une-carte-bancaire-gratuite.jpg';

                    return array(    
                        
            'logo' => array(
                            
            'label' => '',
                            
            'type' => 'custom',
                            
            'html' => '<img src="'.$logo_img.'"/>',
                        ),
                        
            'merchantid' => array(
                            
            'label' => 'Merchant ID',
                            
            'type' => 'text',
                        ),
                        
            'testmode' => array(
                            
            'label' => 'Test Mode',
                            
            'type' => 'select',
                            
            'options' => array('Yes''No'),
                        ),
                    );
                }



                
            /**
                 * Class constructor.
                 *
                 * @param     array     $order      The order info array.
                 * @param     array     $params  The payment configuration. These fields are the
                 *                              same of the getAdminParameters() function.
                 */
                
            public function __construct($order$params = array())
                {
                    
            $this->order_info $order;
                    
            $this->params $params;


            //Formater le total sans virgule
            $total number_format($this->order_info['total_to_pay'] * 1000'''');
            // Test "vads_amount"
            //$TestTotal = $this->order_info['total_net_price'];
            //var_dump ($total);
            //echo $total;

            //Initialisation variable de transaction (basé sur l'ID de la commande)
            $id_trans $this->order_info['oid'];
            while(
            strlen($id_trans)<6)
            {
            $id_trans '0'$id_trans;
            }
            // Test "vads_trans_id"
            //var_dump ($id_trans);
            //echo $id_trans;


                // Détails du paiement.
                
            $params ['vads_ctx_mode']= $mode;
                
            $params ['vads_amount']= $total;
                
            $params ['vads_action_mode']= "TEST";
                
            $params ['vads_currency']= $currency;
                
            $params ['vads_page_action']= $action;
                
            $params ['vads_payment_config']= $config;
                
            $params ['vads_site_id']= $idmarchand;
                
            $params ['vads_trans_date']= $currentTime;
                
            $params ['vads_trans_id']= $id_trans;
                
            $params ['vads_version']= $version;
                
            $params ['vads_cle']= $key;


                    
            // Fonction qui calcule la signature (concatenation des valeurs)
                    // $params : tableau contenant les champs à envoyer dans le formulaire
                    
            function getSignature($params){
                    
            //Initialisation de la variable qui contiendra la chaine à chiffrer
                    
            $contenu_signature "" ;
                     
            // tri des champs par ordre alphabétique
                     
            ksort($params);
                     foreach (
            $params as $nom =>$valeur)
                     {
                     
            // Récupération des champs vads_
                     
            if (substr($nom,0,5)=='vads_') {
                     
            // Concaténation avec le séparateur "+"
                     
            $contenu_signature .= $valeur."+";
                     }
                     }
                    
            // Ajout du certificat à la fin
                    
            $contenu_signature .= $key;
                    
            // Application de l’algorythme SHA-1
                    
            $signature sha1($contenu_signature);
                    return 
            $signature ;

                    
            //Ajout signature au tableau
                    
            $params ['signature'] = $signature;
                    
            // Test "Signature"
                    //var_dump ($signature);
                    
            echo $signature;
                    }
                }
                
            /**
                 * This method is invoked every time a user visits the page of a reservation with PENDING Status.
                 *
                 * @return     void
                 */

                
            public function showPayment()
                {
                    
            $merchant_id $this->params['merchantid'];
                        
            $action_url "https//adresse.../";
                            if (
            $this->params['testmode'] == 'Yes') {
                        
            $action_url "https//adresse.../";
                    }
                    
            $form '<form action="'.$action_url.'" method="post">';        
                    
            // put here all the required fields of your gateway
                    
            $form .= '<input type="text" name="vads_action_mode" value="'."INTERACTIVE".'"/>'// Yes No => TEST or PRODUCTION //OK
                    
            $form .= '<input type="text" name="vads_amount" value="'.$total.'"/>'//NO
                    
            $form .= '<input type="text" name="vads_ctx_mode" value="'."TEST".'"/>';
                    
            $form .= '<input type="text" name="vads_currency" value="'.$currency.'"/>';
                    
            $form .= '<input type="text" name="vads_page_action" value="'.$action.'"/>';
                    
            $form .= '<input type="text" name="vads_payment_config" value="'.$config.'"/>';
                    
            $form .= '<input type="text" name="vads_site_id" value="'.$idmarchand.'"/>';
                    
            $form .= '<input type="text" name="vads_trans_date" value="'.$currentTime.'"/>';
                    
            $form .= '<input type="text" name="vads_trans_id" value="'.$id_trans.'"/>'// ATTENTION N° order 6 caractères
                    
            $form .= '<input type="text" name="vads_version" value="'.$version.'"/>';
                    
            $form .= '<input type="text" name="vads_cle" value="'.$key.'"/>';
                    
            $form .= '<input type="text" name="signature" value="'.$signature.'"/>';
                    
            $form .= '<input type="submit" name="payer" value="Payer"/>';
                    
            $form .= '</form>';        
                    echo 
            $form;
                } 
            Cordialement.

            Eric
            Dernière édition par Agrepe à 16/05/2018, 08h54

            Commentaire


            • #7
              Bonjour,
              Je viens de comprendre une partie de la raison du souci que je rencontre.

              Mes variables sont:
              1) Soit au début du fichier php.
              2) Soit dans une première fonction. (public function __construct($order, $params = array()) ...)

              J'ai donc déplacé les variables qui étaient au début du fichier vers la première fonction, pour les affecter à $params.
              Code PHP:
                  public function __construct($order$params = array())
                  {
                      
              $this->order_info $order;
                      
              $this->params $params;

                          
              //Formater le total sans virgule
                          
              $total number_format($this->order_info['total_to_pay'] * 1000'''');
                          
              //echo $total;

                          //Initialisation variable de transaction (basé sur l'ID de la commande)
                          
              $id_trans $this->order_info['oid'];
                          while(
              strlen($id_trans)<6)
                          {
                          
              $id_trans '0'$id_trans;
                          }
                          
              // Test "vads_trans_id"
                          //var_dump ($id_trans);
                          //echo $id_trans;

              Date de la transaction formatéeExemple20170129130025
              $currentTime 
              JFactory::getDate()->format('YmdHis');

              // Variables "fixes"
              $mode "INTERACTIVE";
              $idmarchand "41570633";
              $key "2828988364697742";
              $version "V2";
              $config "SINGLE";
              $action "PAYMENT";
              $currency ="978";

              // Détails du paiement.
                  
              $params ['vads_ctx_mode']= $mode;
                  
              $params ['vads_amount']= $total;
                  
              $params ['vads_action_mode']= "TEST";
                  
              $params ['vads_currency']= $currency;
                  
              $params ['vads_page_action']= $action;
                  
              $params ['vads_payment_config']= $config;
                  
              $params ['vads_site_id']= $idmarchand;
                  
              $params ['vads_trans_date']= $currentTime;
                  
              $params ['vads_trans_id']= $id_trans;
                  
              $params ['vads_version']= $version;
                  
              $params ['vads_cle']= $key;

               } 

              Ensuite je dois les récupérer dans une deuxième fonction. (public function showPayment() ...)
              Code PHP:
              public function showPayment()
                  {        
                      
              $merchant_id $this->params['merchantid'];
                          
              $action_url "https://paiement.systempay.fr/vads-payment/";
                              if (
              $this->params['testmode'] == 'Yes') {
                          
              $action_url "https://paiement.systempay.fr/vads-payment/";
                      }
                      
              $form '<form action="'.$action_url.'" method="post">';        
                      
              // put here all the required fields of your gateway
                      
              $form .= '<input type="text" name="vads_action_mode" value="'."INTERACTIVE".'"/>'// Yes No => TEST or PRODUCTION //OK
                      
              $form .= '<input type="text" name="vads_amount" value="'.$total.'"/>'//NO
                      
              $form .= '<input type="text" name="vads_ctx_mode" value="'."TEST".'"/>';
                      
              $form .= '<input type="text" name="vads_currency" value="'.$currency.'"/>';
                      
              $form .= '<input type="text" name="vads_page_action" value="'.$action.'"/>';
                      
              $form .= '<input type="text" name="vads_payment_config" value="'.$config.'"/>';
                      
              $form .= '<input type="text" name="vads_site_id" value="'.$idmarchand.'"/>';
                      
              $form .= '<input type="text" name="vads_trans_date" value="'.$currentTime.'"/>';
                      
              $form .= '<input type="text" name="vads_trans_id" value="'.$id_trans.'"/>'// ATTENTION N° order 6 caractères
                      
              $form .= '<input type="text" name="vads_version" value="'.$version.'"/>';
                      
              $form .= '<input type="text" name="vads_cle" value="'.$key.'"/>';
                      
              $form .= '<input type="text" name="signature" value="'.$signature.'"/>';
                      
              $form .= '<input type="submit" name="payer" value="Payer"/>';
                      
              $form .= '</form>';        
                      echo 
              $form;
                  } 
              Mais je ne vois pas les valeurs de ces variables dans le formulaire, qui lui est placé dans la deuxième fonction.

              Quelqu'un aurait-il une idée de comment faire ?

              Cordialement.

              Eric
              Dernière édition par Agrepe à 16/05/2018, 09h14

              Commentaire


              • #8
                Bonjour,
                J'ai avancé sur mon souci, il ne me reste plus qu'un point à résoudre.
                J'ai besoin de passer mes variable ($params...) dans ma fonction.

                Je tente avec le préfix "global" mais rien n'y fait, quelqu'un saurait-il m'expliquer?

                Cordialement.

                Eric



                Code PHP:
                $params ['vads_action_mode']= $actionmode;
                    
                $params ['vads_amount']= $total;
                    
                $params ['vads_ctx_mode']= $ctxmode;
                    
                $params ['vads_currency']= $currency;
                    
                $params ['vads_page_action']= $action;
                    
                $params ['vads_payment_config']= $config;
                    
                $params ['vads_site_id']= $idmarchand;
                    
                $params ['vads_trans_date']= $currentTime;
                    
                $params ['vads_trans_id']= $id_trans;
                    
                $params ['vads_version']= $version;

                        
                // Fonction qui calcule la signature
                        // $params : tableau contenant les champs à envoyer dans le formulaire
                        
                function getSignature($params){
                        
                //Initialisation de la variable qui contiendra la chaine à chiffrer
                        
                $contenu_signature "" ;
                             
                // tri des champs par ordre alphabétique
                             
                ksort($params);
                             foreach (
                $params as $nom =>$valeur)
                             {
                             
                // Récupération des champs vads_
                                 
                if (substr($nom,0,5)=='vads_') {
                                 
                // Concaténation avec le séparateur "+"
                                 
                $contenu_signature .= $valeur."+";
                                 }
                             }
                        
                // Ajout du certificat à la fin
                        
                $contenu_signature .= $key;
                        
                // Application de l’algorythme SHA-1
                        
                $signature sha1($contenu_signature);
                        return 
                $signature ;

                        
                //Ajout signature au tableau
                        
                $params ['signature'] = $signature;
                        
                var_dump ($signature);
                        } 
                Dernière édition par Agrepe à 18/05/2018, 15h29

                Commentaire

                Annonce

                Réduire
                Aucune annonce pour le moment.

                Partenaire de l'association

                Réduire

                Hébergeur Web PlanetHoster
                Travaille ...
                X