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
    http://php.net/manual/fr/function.time.php
    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)
        Développeur d'aeSecure; protection, optimisation et nettoyage (après hack) de sites web Apache https://www.aesecure.com/fr
        Développeur de marknotes, logiciel de gestion de prises de notes avec interface web et de multiples convertisseur https://github.com/cavo789/marknotes

        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
                1 sur 2 < >

                C'est [Réglé] et on n'en parle plus ?

                A quoi ça sert ?
                La mention [Réglé] permet aux visiteurs d'identifier rapidement les messages qui ont trouvé une solution.

                Merci donc d'utiliser cette fonctionnalité afin de faciliter la navigation et la recherche d'informations de tous sur le forum.

                Si vous deviez oublier de porter cette mention, nous nous permettrons de le faire à votre place... mais seulement une fois
                Comment ajouter la mention [Réglé] à votre discussion ?
                1 - Aller sur votre discussion et éditer votre premier message :


                2 - Cliquer sur la liste déroulante Préfixe.

                3 - Choisir le préfixe [Réglé].


                4 - Et voilà… votre discussion est désormais identifiée comme réglée.

                2 sur 2 < >

                Assistance au forum - Outil de publication d'infos de votre site

                Compatibilité: PHP 4.1,PHP4, 5, 6DEV MySQL 3.2 - 5.5 MySQLi from 4.1 ( @ >=PHP 4.4.9)

                Support Version de Joomla! : | J!3.0 | J!2.5.xx | J!1.7.xx | J!1.6.xx | J1.5.xx | J!1.0.xx |

                Version française (FR) D'autres versions sont disponibles depuis la version originale de FPA

                UTILISER À VOS PROPRES RISQUES :
                L'exactitude et l'exhaustivité de ce script ainsi que la documentation ne sont pas garanties et aucune responsabilité ne sera acceptée pour tout dommage, questions ou confusion provoquée par l'utilisation de ce script.

                Problèmes connus :
                FPA n'est actuellement pas compatible avec des sites Joomla qui ont eu leur fichier configuration.php déplacé en dehors du répertoire public_html.

                Installation :

                1. Téléchargez l'archive souhaitée : http://afuj.github.io/FPA/

                Archive zip : https://github.com/AFUJ/FPA/zipball/master

                2. Décompressez le fichier de package téléchargé sur votre propre ordinateur (à l'aide de WinZip ou d'un outil de décompression natif).

                3. Lisez le fichier LISEZMOI inclus pour toutes les notes de versions spécifiques.

                4. LIRE le fichier de documentation inclus pour obtenir des instructions d'utilisation détaillées.

                5. Téléchargez le script fpa-fr.php à la racine de votre site Joomla!. C'est l'endroit que vous avez installé Joomla et ce n'est pas la racine principale de votre serveur. Voir les exemples ci-dessous.

                6. Exécutez le script via votre navigateur en tapant: http:// www. votresite .com/ fpa-fr.php
                et remplacer www. votresite .com par votre nom de domaine


                Exemples:
                Joomla! est installé dans votre répertoire web et vous avez installé la version française du fichier FPA:
                Télécharger le script fpa-fr.php dans: /public_html/
                Pour executer le script: http://www..com/fpa-fr.php

                Joomla! est installé dans un sous-répertoire nommé "cms" et vous avez installé la version française du fichier FPA:
                Télécharger le script fpa-fr.php dans: /public_html/cms/
                Pour executer le script: http://www..com/cms/fpa-fr.php

                En raison de la nature très sensible de l'information affichée par le script FPA, il doit être retiré immédiatement du serveur après son utilisation.

                Pour supprimer le script de votre site, utilisez le lien de script de suppression fourni en haut de la page du script. Si le lien de suppression échoue pour supprimer le script, utilisez votre programme FTP pour le supprimer manuellement ou changer le nom une fois que le script a généré les données du site et le message publié sur le forum. Si le script est toujours présent sur le site, il peut être utilisé pour recueillir suffisamment d'informations pour pirater votre site. Le retrait du script empêche des étrangers de l'utiliser pour jeter un oeil à la façon dont votre site est structuré et de détecter les défauts qui peuvent être utilisé à vos dépends.
                Voir plus
                Voir moins
                Travaille ...
                X