Je me permets de créer un sujet car je n’ai pas trouvé de réponse à ma question. J’ai récupéré un module qui avait été ajouté au code de Dolibarr sans fichier card ou autre documentation. J’ai donc décidé de le refaire en utilisant le module de création intégré à Dolibarr. Cependant, je n’arrive pas à comprendre pourquoi mes heures ne sont pas enregistrées correctement, je pense que j’ai mal compris comment utiliser la fonction select_duration. Si quelqu’un a des explications sur ce point, je suis preneur.
Je joins également quelques captures d’écran pour mieux illustrer mon problème.
Effectivement, je parviens à obtenir une réponse de la part du serveur et j’ai constaté que j’avais toujours une différence de 42 minutes exactement dans mon enregistrement en base de données. Cependant, je remarque que les minutes ne s’affichent pas dans Dolibarr, seules les heures sont visibles.
Petite remarque : vous utilisez directement la variable $_POST, ce n’est pas une bonne pratique avec Dolibarr. Il faut utiliser la fonction GETPOST fournie par Dolibarr qui va filtrer les injections de valeurs malveillantes.
Bonjour, malgré le fait que se soit une sélection dans une liste, il y a un risque d’injection ?
P.S. : Je viens de le faire quand même pour être sûr du coup.
Je me pose la question car le PHP n’est pas mon langage de prédilection à la base
Oui vous avez raison, mais ma question été plus est-ce que les élément du formulaire sont bien dans le POST, mais coté Dolibarr on les récupéres avec GETPOST, ce qui normalement le cas avec le module builder ou les extrafields
En toute logique, toutes les données ont bien été transmises en post car la création de l’objet est complète dans la base de données. Il y a seulement un décalage de 42 minutes supplémentaires à chaque fois. Pourtant, j’utilise les fonctions de Dolibarr pour récupérer le temps et je n’arrive pas à afficher les minutes récupérées dans le select_duration présent sur chaque ligne.
||/**|
|---|---|
|| * Function to show a form to select a duration on a page|
|| *|
|| * @param string $prefix Prefix for input fields|
|| * @param int $iSecond Default preselected duration (number of seconds or '')|
|| * @param int $disabled Disable the combo box|
|| * @param string $typehour If 'select' then input hour and input min is a combo,|
|| * If 'text' input hour is in text and input min is a text,|
|| * If 'textselect' input hour is in text and input min is a combo|
|| * @param integer $minunderhours If 1, show minutes selection under the hours|
|| * @param int $nooutput Do not output html string but return it|
|| * @return string HTML component|
|| */|
||public function select_duration($prefix, $iSecond = '', $disabled = 0, $typehour = 'select', $minunderhours = 0, $nooutput = 0)|
lorsque je change le $typehour, je vois bien les changement pour la manière de sélection de l’heure et si je change le préfix, je dois les changer également dans le GETPOST.
En gros j’ai bien l’impression que les paramètres sont effectif.
Merci beaucoup, cette version est bien meilleure pour la récupération du temps dans ma base de données. Maintenant, je suis capable de calculer correctement la durée pour mon calendrier. Cependant, le temps ne s’affiche toujours pas dans ma sélection de durée, et le calcul est étrange. Je vais devoir regarder cela de plus près.
J’ai également effectué vos changements. Merci aussi à vous