Formulaire Fabrik, récupérer la valeur d'un champ ?

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

  • [RÉGLÉ] Formulaire Fabrik, récupérer la valeur d'un champ ?

    Bonjour,

    Certains l'ont peut-être vu, je m'initie à Fabrik, et à une question posée sur leur forum comme ici, je n'ai pas de réponse : comment récupérer la valeur d'un champ de formulaire (avant enregistrement dans la base) pour l'utiliser dans le calcul d'un autre ?
    En l'occurrence, j'ai deux champs de type "date" et je veux pouvoir calculer la date de départ à partir de celle choisie dans le champ de date d'arrivée. Impossible dans Fabrik compte tenu de mes connaissances et de mes recherches dans leur wiki de trouver quelle variable me donnerait cette info, alors je me pose la question d'une interrogation par PHP de la valeur du champ à partir de son nom.
    Dans le code source :
    Code:
    <input type="text" name="nmne2_fb_stay___arrival_date" id="nmne2_fb_stay___arrival_date_cal" value="2020-04-19" class="fabrikinput inputbox input input-medium" size="10" maxlength="19" />
    <button type="button" class="btn calendarbutton" id="nmne2_fb_stay___arrival_date_cal_cal_img" aria-label="Calendrier">
    <i data-isicon="true" class="icon-calendar " ></i></button>
    C'est donc cette value="2020-04-19" que je cherche à récupérer, sans succès.
    Même ce code ne me renvoie que 'default value' :
    Code:
    $app = JFactory::getApplication();
    $f = $app->input->get('nmne2_fb_stay___arrival_date', 'default value', 'string');
    Merci de vos conseils,
    Robert
    "Patience et longueur de temps font plus que force ni que rage..." (La Fontaine : Le Lion et le Rat) - "Il n'y a pas de problèmes; il n'y a que des solutions" (André Gide).
    MoovJla et LazyDbBackup sur www.joomxtensions.com - FaQ sur www.fontanil.info - Site pro : www.robertg-conseil.fr chez PHPNET, sites perso chez PlanetHoster + sites gérés chez PHPNET, PlanetHoster, Ionos et OVH

  • #2
    Hello.

    Je ne connais pas Fabrik, mais essaie d'afficher le contenu de $_GET pour voir ce que tu reçois de ton formulaire html par un print_r par exemple ou tout autre moyen comme en l'enregistrant dans les logs (voir ici pour l'usage des logs : https://forum.joomla.fr/forum/d%C3%A...le#post2011839)

    Dernière édition par roland_d_alsace à 12/04/2020, 10h23
    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


    • #3
      Merci Roland,

      Code:
      $arr_date = $_GET['nmne2_fb_stay___arrival_date'];
      print_r ($arr_date);
      J'utilisais echo plutôt que print_r, mais pas de différence. J'ai essayé $_POST et $_GET : rien à faire, la variable revient vide

      Code:
      $arr_date = $_GET['nmne2_fb_stay___arrival_date'];
      if (isset($arr_date)) {
      print_r ($arr_date);
      } else {
      print_r ('pas trouvé');
      }
      ça m'affiche "pas trouvé" !

      En JS, ça fonctionne, mais je ne saurai pas faire le reste des calculs et comparaisons...
      Code:
      var name = Fabrik.getBlock('form_17').elements.get('nmne2_fb_ stay___arrival_date');
      value = name.get('value');
      alert(value);
      Dernière édition par RobertG à 12/04/2020, 11h36
      "Patience et longueur de temps font plus que force ni que rage..." (La Fontaine : Le Lion et le Rat) - "Il n'y a pas de problèmes; il n'y a que des solutions" (André Gide).
      MoovJla et LazyDbBackup sur www.joomxtensions.com - FaQ sur www.fontanil.info - Site pro : www.robertg-conseil.fr chez PHPNET, sites perso chez PlanetHoster + sites gérés chez PHPNET, PlanetHoster, Ionos et OVH

      Commentaire


      • #4
        Non, je voulais voir ce que retourne ton formulaire comme variables.

        Donc juste print_r($_GET);
        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


        • #5
          J'ai du mal à comprendre !
          Cette instruction renvoie "Array ()", mais si je précise print_r ((int)$_GET["nmne2_fb_stay___arrival_date"]); je récupère "0", et rien si je supprime (int).

          Le formulaire comporte toute une série de champs et utilise method = "post".
          Parmi ces champs trois sont de type date et pour le dernier, je veux pouvoir calculer en fonction de la date sélectionnée dans le deuxième.
          Le formulaire gère la réservation de séjours où il y a un impératif : la date de départ doit être égale ou postérieure au samedi suivant celle d'arrivée qui es en principe un dimanche (mais peut être antérieure, ce qui complique déjà).
          Je dois donc pouvoir calculer avec php quel est le jour de départ minimum par rapport au jour d'arrivée, en tenant compte d'une précédente sélection d'un départ plus lointain.

          J'ai parcouru des pages à la recherche de la récupération par PHP de la variable que me renvoie le code JS, mais pas compris quoi faire... et je viens d'avoir une réponse sur le forum Fabrik qui me dit qu'il faut que j'utilise JS et pas PHP pour ces calculs (que je ne sais pas faire, ni gérer les conditions comme calculer le prochain dimanche et le samedi qui suit).
          "Patience et longueur de temps font plus que force ni que rage..." (La Fontaine : Le Lion et le Rat) - "Il n'y a pas de problèmes; il n'y a que des solutions" (André Gide).
          MoovJla et LazyDbBackup sur www.joomxtensions.com - FaQ sur www.fontanil.info - Site pro : www.robertg-conseil.fr chez PHPNET, sites perso chez PlanetHoster + sites gérés chez PHPNET, PlanetHoster, Ionos et OVH

          Commentaire


          • #6
            Envoyé par RobertG Voir le message
            J'ai du mal à comprendre !
            Cette instruction renvoie "Array ()", mais si je précise print_r ((int)$_GET["nmne2_fb_stay___arrival_date"]); je récupère "0", et rien si je supprime (int).

            Le formulaire comporte toute une série de champs et utilise method = "post".
            ...
            Oups, excuse moi, confusion classique entre post et get ($_GET ce sont les variables d'URL et pas de formulaire, donc normal qu'il n'y ait aucune variable dans l'array).
            A ma décharge, je suis en mode "bricolage" actuellement.

            Fait un print_r($_POST)
            Dernière édition par roland_d_alsace à 12/04/2020, 15h49
            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


            • #7
              Là aussi, j'ai "Array()"
              "Patience et longueur de temps font plus que force ni que rage..." (La Fontaine : Le Lion et le Rat) - "Il n'y a pas de problèmes; il n'y a que des solutions" (André Gide).
              MoovJla et LazyDbBackup sur www.joomxtensions.com - FaQ sur www.fontanil.info - Site pro : www.robertg-conseil.fr chez PHPNET, sites perso chez PlanetHoster + sites gérés chez PHPNET, PlanetHoster, Ionos et OVH

              Commentaire


              • #8
                Envoyé par RobertG Voir le message
                Là aussi, j'ai "Array()"
                La j'ai un peu de mal à comprendre, si les donnée saisies ne sont ni envoyée en get, ni en post, ceci pourrait signifier qu'elles sont envoyée en Ajax ?
                En tous cas on est sur un montage un peu spécial là...

                Sinon il faut voir où les données sont stockée et les récupérer là.

                Tu es sur d'être au bon endroit avec ton code ?
                La balise form elle renvoie vers quelle url ?



                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


                • #9
                  Oui, le formulaire utilise Ajax, et sur le forum Fabrik, il m'a finalement été dit qu'il fallait que je gère en JS, mais ce qui fonctionnait précédemment pour récupérer ce que je voulais me bloque maintenant systématiquement l'ouverture du calendrier avec une erreur JS. Je ne suis pas loin de craquer...

                  Ce que je veux faire, c'est pendant le remplissage du formulaire, avant validation, donc a priori PHP ne connaît pas ce que j'ai modifié sur mon écran.C'est pourquoi je cherchais un moyen de récupérer en JS et transmettre à PHP pour les calculs.
                  "Patience et longueur de temps font plus que force ni que rage..." (La Fontaine : Le Lion et le Rat) - "Il n'y a pas de problèmes; il n'y a que des solutions" (André Gide).
                  MoovJla et LazyDbBackup sur www.joomxtensions.com - FaQ sur www.fontanil.info - Site pro : www.robertg-conseil.fr chez PHPNET, sites perso chez PlanetHoster + sites gérés chez PHPNET, PlanetHoster, Ionos et OVH

                  Commentaire


                  • #10
                    Bonjour,

                    Faute d'arriver à calculer depuis le calendrier des départs la nouvelle date de départ lors d'un changement de date d'arrivée, j'ai pris le problème dans l'autre sens en utilisant l'onglet Javascript du calendrier d'arrivée avec un script basé sur l'action "change" de ce calendrier.
                    Ainsi, j'injecte dans le calendrier de départ le résultat du calcul de la date de départ à chaque changement de date d'arrivée. Pour le moment, j'ajoute 6 jours, mais il me faudra calculer, ce qui me paraît beaucoup plus lourd qu'en PHP, si le jour d'arrivée choisi est ou non un dimanche, sinon chercher le dimanche suivant pour trouver le samedi à venir, sauf si ce calendrier de départ est défini sur une date égale ou postérieure à ce samedi.
                    Il faudra aussi que j'arrive à calculer le nombre de nuits supplémentaires si l'arrivée se fait avant le dimanche et le départ après le samedi, et le nombre de semaines de stage pour la facturation...
                    Code:
                    var to_date_id = 'nmne2_fb_stay___departure_date';
                    var to_date = Fabrik.getBlock('form_17').formElements.get(to_date_id);
                    var from_date = this.get('value');
                    var newDate = new Date(from_date);
                    newDate.setDate(newDate.getDate() + 6);
                    to_date.set(newDate);
                    Donc depuis le champ que je modifie, je définis le champ à mettre à jour, je récupère la date sélectionnée dans le champ actuel, j'incrémente et j'applique.
                    "Patience et longueur de temps font plus que force ni que rage..." (La Fontaine : Le Lion et le Rat) - "Il n'y a pas de problèmes; il n'y a que des solutions" (André Gide).
                    MoovJla et LazyDbBackup sur www.joomxtensions.com - FaQ sur www.fontanil.info - Site pro : www.robertg-conseil.fr chez PHPNET, sites perso chez PlanetHoster + sites gérés chez PHPNET, PlanetHoster, Ionos et OVH

                    Commentaire


                    • #11
                      J'ai sacrément galéré avec apparition d'erreurs JS qui ne se manifestaient pas dans la console, mais juste par le non-exécution du code...
                      Parfois la cause était liée à un manque d'attention à la saisie, parfois c'était incompréhensible, ce qui m'a conduit à repartir sur deux nouveaux champs. Maintenant, le changement de date d'arrivée calcule celle de départ par défaut, interdit un départ antérieur à cette date, mais conserve la date de départ si elle a été définie au-delà de cette date minimale.

                      Prochaine étape : calculer les nuits supplémentaires si l'étudiant arrive et/ou part un autre jour que ceux de début et fin de stage, et donc recalculer à chaque modification de date.

                      Mine de rien, ça occupe, Fabrik, surtout quand on n'y connaît rien en JS et qu'il faut tout apprendre au fur et à mesure des besoins...
                      "Patience et longueur de temps font plus que force ni que rage..." (La Fontaine : Le Lion et le Rat) - "Il n'y a pas de problèmes; il n'y a que des solutions" (André Gide).
                      MoovJla et LazyDbBackup sur www.joomxtensions.com - FaQ sur www.fontanil.info - Site pro : www.robertg-conseil.fr chez PHPNET, sites perso chez PlanetHoster + sites gérés chez PHPNET, PlanetHoster, Ionos et OVH

                      Commentaire


                      • #12
                        Et zut !
                        Je n'y comprends rien. Le changement de date de départ en fonction de celle d'arrivée fonctionne, mais seulement avec 3 "alert" que j'avais placés dans le script lancé lorsque la date d'arrivée est modifiée, afin de vérifier des valeurs calculées : si je les supprime, ça ne fonctionne plus, la date de départ n'est pas modifiée.

                        J'ai essayé une "function sleep()" puis utilisé "sleep(1000)" pour forcer une pause, sans succès.
                        Dernière édition par RobertG à 16/04/2020, 14h02
                        "Patience et longueur de temps font plus que force ni que rage..." (La Fontaine : Le Lion et le Rat) - "Il n'y a pas de problèmes; il n'y a que des solutions" (André Gide).
                        MoovJla et LazyDbBackup sur www.joomxtensions.com - FaQ sur www.fontanil.info - Site pro : www.robertg-conseil.fr chez PHPNET, sites perso chez PlanetHoster + sites gérés chez PHPNET, PlanetHoster, Ionos et OVH

                        Commentaire


                        • #13
                          J'ai trouvé ! En fait dans cette partie "JavaScript" du champ, bien qu'un message signale que des commentaires (//) sont permis dans le code, c'étaient eux qui bloquaient et faisaient sortir du code avant exécution...
                          gilb33 aime ceci.
                          "Patience et longueur de temps font plus que force ni que rage..." (La Fontaine : Le Lion et le Rat) - "Il n'y a pas de problèmes; il n'y a que des solutions" (André Gide).
                          MoovJla et LazyDbBackup sur www.joomxtensions.com - FaQ sur www.fontanil.info - Site pro : www.robertg-conseil.fr chez PHPNET, sites perso chez PlanetHoster + sites gérés chez PHPNET, PlanetHoster, Ionos et OVH

                          Commentaire

                          Annonce

                          Réduire
                          Aucune annonce pour le moment.

                          Partenaire de l'association

                          Réduire

                          Hébergeur Web PlanetHoster
                          Travaille ...
                          X