Ce site permet, à tout visiteur, d'utiliser mes utilitaires partout où il existe une connexion Internet.
Le formulaire technique MARCEAU Claude, est un site de calcul technique en ligne, gratuit et sans inscription.
Tout ce qui est sur ce site est sous license GPL, à l'exception de ce qui touche la vie privée de l'auteur.
Ce site est testé et optimisé pour FIREFOX 3, 11, 20. Il ne contient AUCUNE pub, si vous utilisez directement le site ci-dessus. ⍋
Protocole de création d'un nouveau formulaire en utilisant le gabarit pré-programmé.Après avoir défini les paramètres et les formules à calculer pour chaque cas traité, suivre la liste des points ci-dessous. Préembule sur les prétraitements automatisés du formulaire de base.Le formulaire prend en charge une partie des traitements à effectuer. La première des opérations réalisée est le controle des variables transmises par $_POST[] du formulaire. Ce tableau est indexé en fonction de la position des paramètres dans la zone "Tableau d'introduction des paramètres de calcul" du formulaire. Toutes les entrées sont des entrées destinées à faire des calculs, donc toutes les entrées textes sont refusées par défaut.
Format de données valides pour les calculs : Certaines entrées interprêtées comme texte par PHP sont considèrées comme valides par le formulaire : - Les entrées avec des nombres comportant des espaces comme séparateur de millier sont considérées valides et transformées en nombre. - Les entrées avec des nombres comportant un séparateur décimal latin (une virgule et une seule) sont considérées valides et transformées en nombre. * parmis ces nombres on retrouve : les entrées numérique ordinaires, mais aussi en degré décimaux ou en radian, .
- Les entrées en degré sexagésimaux comprenant les signes ° pour degré et ' pour minute sont admises aussi comme valides. le signe " pour seconde étant facultatif, et devant être placé en dernière position de l'entrée. * ce qui vaut pour les autres nombres, l'est aussi pour ce type d'entrée. (séparateur millier et décimaux latins) * Le signe doit être en première position, est porte sur la totalité du nombre. * La seule partie décimale acceptée ici est le nombre de seconde, qui doit toujours être précisée même si nulle. * Les parties en minute et seconde si elles sont supérieures respectivement à 60 ou 60 et 3600 sont converties en degré et minute, et sont valides.
les contrôles automatiques du formulaire de base : La premières des opérations est donc de contrôler toutes les entrées et de placer le résultat de ce contrôle dans le tableau indexé $testPost[]. Ce tableau indique le type de donnée et son signe. * les types possibles sont : d pour degré, r pour radian, n pour tous les autres. * les signes retournés sont + pour positif, z pour valeur 0 et - pour négatif. * les autres valeurs de ce tableau peuvent être : t pour texte et v pour vide Si une ou plusieurs entrées sont détectés comme texte, le calcul est invalidé et un message sur les entrées dont la syntaxe n'est pas correcte en renvoyé au visiteur du site.
remplissage des tableaux utilisés par le formulaire de base : La deuxième opération est la mémorisation des textes du formulaire pour permettre l'envoie des messages dans le tableau $ParLtext qui contient le texte descriptif de l'entrée choisie. Ce tableau est indexé lui aussi en fonction de la position des paramètres dans la zone "Tableau d'introduction des paramètres de calcul" du formulaire.
La troisième opération est la mémorisation des entrées brutes du formulaire converties en nombres anglosaxons dans le tableau $inValB[] qui contient également les messages de détection des types d'erreur sur les entrées renvoyés par les fonctions. Ce tableau est indexé lui aussi en fonction de la position des paramètres dans la zone "Tableau d'introduction des paramètres de calcul" du formulaire.
La quatrième opération est la mémorisation des valeurs des unitées (texte long) du formulaire dans le tableau $inULtext[]. Ce tableau est indexé lui aussi en fonction de la position des paramètres dans la zone "Tableau d'introduction des paramètres de calcul" du formulaire.
La cinquième opération est la mémorisation des valeurs des symboles des unitées (texte court) du formulaire dans le tableau $inUStext[]. Ce tableau est indexé lui aussi en fonction de la position des paramètres dans la zone "Tableau d'introduction des paramètres de calcul" du formulaire.
La sixième opération est la mémorisation des valeurs coefficients multiplicateur à appliquer aux nombres avant calcul dans le tableau $inUcoef[]. Ce tableau est indexé lui aussi en fonction de la position des paramètres dans la zone "Tableau d'introduction des paramètres de calcul" du formulaire.
La septième opération est la mise à l'échelle des paramètres pour les calculs dans le tableau $tabCalcul[]. Les valeurs de ce tableau sont donc celles utilisées pour effectuer les calculs. Ce tableau est indexé lui aussi en fonction de la position des paramètres dans la zone "Tableau d'introduction des paramètres de calcul" du formulaire. Les valeurs présentes dans ce tableau sont uniquement les valeurs transmisent par $_POST[]. Il n'est pas complêté pendant les calculs.
Après ces étapes les calculs sont autorisés en fonction de ce qui programmé pour chaque paramètre. Tout ceci bien ententu si les renseignements donnés sont suffisants. Il ne peut y avoir que le nombre de données voulues. Si calcul n'est pas réalisé s'il y a trop de paramètres, même si ces données donneraient un résultat correct.
mise à l'échelle des calculs en fonction des unitées demandées : Une fois les calculs effectués, le formulaire se charge de : S'il apparait un problème avec les données lors du calcul, apparition d'une division par zéro ou racine carré négative, etc ... - d'arrêter le calcul et de donner un message d'erreur.
Si le calcule se termine normalement : - de retourner la valeur dans l'unité demandée, donc données sur un champ laissé vide du formulaire. - cela vaut aussi pour certains calculs annexes, retournés dans l'unité demandé par le champ "Unité pour calculs annexes".
Liste des points à faire pour créer une nouvelle page de Formulaire.Le contrôle des différentes étapes de création peuvent être réalisées à tout instant, tous les cas sont prévus dans le fichier source du gabarit. 0) Entrer le nom du fichier image pour l'explication du formulaire [ SECTimgPresentation ]Si une image est créée pour illustrer le formulaire, mettre le nom du fichier image dans la variable $imgSrc="". Si il n'y a rien de prévu, laisser le contenu de la variable vide. 1) Entrer le texte explicatif sur la présentation des paramètres du formulaire [ SECTparamPresentation ]Lister les différents paramètres, les grouper par types si besoin. Donner le nom abrégé en gras et une explication. 2) Écrire le mode d'emploi du formulaire et si besoin les astuces section [ SECTModeEmploi ]Ce mode d'emploi est lui aussi pré-fabriqué, vérifier s'il convient ! Si certains cas d'emploi méritent une attention particulière, les préciser ici. 3) Écrire le texte de la formule de calcul utilisé dans le formulaire [ SECTvarFormule ]La formule de base est insérée dans le formulaire avec variable [ $formule ] Lors de l'écriture de cette formule, remplacer les espaces par pour ne pas couper la formule n'importe où à l'affichage ! 4) Activation de l'affichage des options de calcul du formulaire [ SECTFormOptShow ]Si la formule doit être appliquée différemment suivant différents cas, activer la sélection des cas possibles. Cette activation mettra en place le code de création des options de formulaire. 5) Créer l'option radio button dans la section [ SECTFormOptCreate ]ex: courant continu, courant mono, variable [ $formShowFormOption ] Modifier les noms d'options et le texte pour le rendre plus en rapport avec le formulaire. 6) Renseigner le texte de descrition des paramètres de la formule [ SECTTextParamDesc ]Ces lignes sont destinées à lever les incertitudes sur l'unité utilisé dans la formule. Elles ne doivent pas être coupées n'importe où. exemple de code : $textParamA="<b>F</b> = force sur le levier de la clef <b class=\"rem\">[N] Newton</b>"; 7) Activation des cellules du tableau de formulaire [ SECTFormCellActive ]Le formulaire est préfabriqué avec dix cellules préprogrammées Le contenu de chaque cellule peux être activé avec la variable [ $cellN°active ] Les valeurs sont reprisent dans le formulaire dans des tableaux de variables, les index apparaissent entre [].
********************** Disposition des cellules du tableau ******************** * cellule A [0] * cellule B [1] * ******************************************************************************* * cellule C [2] * cellule D [3] * ******************************************************************************* * cellule E [4] * cellule F [5] * ******************************************************************************* * cellule G [6] * cellule H [7] * ******************************************************************************* * cellule I [8] * cellule J [9] * *******************************************************************************
8) Activation de l'AFFICHAGE du choix des unités des cellules du tableau [ SECTFormCellUnitActive ]Un paramètre peut avoir une unité ou non Ex: COS φ. S'il n'y a pas d'unité, le choix de l'unité est désactivé. L'activation/désactivation est faite par variable [ $cellXunitActive ] avec les valeurs "true"/"false" pour chaque champ. IMPORTANT, remplir tout de même le cefficient de convertion à "1" pour la cellule (au point 10) plus bas !
Exemple de code pour un champ "unité" désactivé sur la cellule H : $tabParamAbrevH["0"]="coef"; // index 0 = unité par défaut pour param, Index 1 = donnée dans formule. $tabParamAbrevH["1"]="coef"; $tabParamCoefH["1"]="1"; $tabParamTexteH["1"]="";
9) Activation du marquage des cellules obligatoires du tableau (non calculées) [ SECTFormCellneeded ]Les paramètres sans réel sens à calculer, ou non calculés par le formulaire sont marqués "Obligatoire" par un carré rouge. Contrôler les entrées de formulaires concernées est vérifier les autres avec "true"/"false" pour chaque cellule active concernée.
10) Activation du marquage des cellules du tableau recevant des angles (degrés décimaux ou sexagésimaux ou radian) [ SECTFormCellangle ]Les cellules recevant des angles sexagésimaux doivent être déclarées pour ne pas être déclarées non valide (!is_numeric).
11) Config de la liste des unités prises en compte dans chaque cellule [ SECTFormCellUnitConfig ]Les unités sont propres à chaque cellules. Faire correspondre les différentes variables avec les coefficients de mise à l'échelle des paramètres Aucune limitation sur le nombre d'unité à tenir compte
Exemple de code pour un champ Force dont l'unité est en "Newton" (la cellule G est activée) : $tabParamAbrevG["0"]="N"; // index 0 = unité par défaut pour param, Index 1 = donnée dans formule. $tabParamAbrevG["1"]="mN"; $tabParamCoefG["1"]=(1e-3); $tabParamTexteG["1"]="milli-Newton(s)"; $tabParamAbrevG["2"]="cN"; $tabParamCoefG["2"]=(1e-2); $tabParamTexteG["2"]="centi-Newton(s)"; $tabParamAbrevG["3"]="N"; $tabParamCoefG["3"]=(1); $tabParamTexteG["3"]="Newton(s)"; $tabParamAbrevG["4"]="daN"; $tabParamCoefG["4"]=(1e1); $tabParamTexteG["4"]="déca-Newton(s)"; $tabParamAbrevG["5"]="kN"; $tabParamCoefG["5"]=(1e3); $tabParamTexteG["5"]="kilo-Newton(s)";
12) Le formulaire fait des calculs en tenant compte des choix d'unité fait par les entrées de la page.Explications sur le fonctionnement du gabarit de formulaire : Quand le serveur reçoit une requête, exécute le code de la page. les opérations suivantes sont réalisées : - Remise en état du formulaire pour faciliter la correction d'une faute de fruppe. - Vérification de la validité des variables $_POST["xxx"] reçues. - Placement des variables reçues dans des tableaux de variables ( ). $ParLtext=""; // Contient un tableau des textes descriptif de paramètre interne au formulaire (textes entrés lors de la conception du formulaire). $inValB=""; // Contient les valeurs brutes passées à la moulinette avec frenchNumInput donc ok pour calcul mais pas à l'échelle $inULtext=""; // contient le texte de l'unité choisie (longText ex: "milli-Newton") $inUStext=""; // contient le symbole de l'unité choisie (shortText ex "mN") $inUcoef=""; // contient le coef à appliquer avant calcul (ex: "1e-3") Précisions sur le mode de calcul : Les calculs sont réalisés avec l'unité de base du SI précisée dans la formule indiquée par le formulaire. Si on transmet un petit nombre, ex : picoFarad, les calculs seront effectués avec une valeur 10-12, mais PHP est capable de faire des calculs à 10-19. Ce point n'est pas important pour les applications auquelles sont destinées ces pages. La précision est jugée suffisante ? - S'il ny a qu'un paramètre non rempli, tous les autres étant donnés, le formulaire sait ce qu'il doit caculer. - Problème pour les convertions et les formulaires dont plusieurs champs peuvent être vides. SOLUTION à TROUVER
- Calcul de la variable avec mise à l'échelle au format demandé. -
b) Fabriquer les équations pour le calcul avec unité de base SI pour chaque paramètre.Suivre les instructions de la section [ SECTFormCALCUL-b ] TODO Le principe et le suivant : Pour chaque entrée on recalcule celle-ci en tenant compte de son unité. Le résultat est placé dans LA variable qui servira pour les calculs.
A l'inverse pour le résultat du calcul si le résultat est demandé dans une autre unité, Le résultat sera converti dans l'unité demandée avant d'être arrondi à la valeur voulue. a) Gérer les cas de calculs impossibles [ SECTFormCALCUL-a ]Copier les entrée de formulaires sur des variables plus expressives en rapport avec les formules à calculer, ex : $ccF=$inUcoef["0"]; $ccL=$inUcoef["1"]; $ccd=$inUcoef["2"]; $ccp=$inUcoef["3"]; $cch=$inUcoef["4"]; $ccbeta=$inUcoef["5"]; $ccR=$inUcoef["6"]; $cctgPhi=$inUcoef["7"];
/*** si le paramétrage est fait dans une autre section, suivre les instructions de la zone concernée, en fin d'instruction valider le check 11) Programmation du formulaire. 1) les points 1 à 10 cités ci-dessus donaient les étapes de conception d'un nouveau formulaire. Ces étapes permettent de donner l'aspect visuel voulu et de permettre au visiteurs de faire les calculs prévus avec leurs propres paramètres. A l'appel de la page, celle-ci est crée avec les paramètres par défaut pré-programmés. 2) Quand le visiteur clique sur le bouton "Calculer" la page est renvoyée au serveur. les opérations suivantes sont effectuées : 2.1) - Controle des entrées de formulaires section [SECTCalculFormVerif] 2.1.a) - Toutes les valeurs reçues en même temps que la page sont placées dans 5 tableaux recevant les informations du formulaire, pendant cette construction : 2.1.b) - Les entrées doivent toutes être de format numérique à l'exception des entrées configurées comme angle qui peuvent recevoir ex : 25°30'20 2.1.c) - Les entrées numérique à séparateur décimaux sont converties en format anglosaxon. Les entrées sont mise à l'échelle de l'unité SI citée dans la formule de base avant calculs. ex : si donnée est en mm calcul fait avec valeur*1e-3. 2.1.c) - Les entrées marquées comme recevant des angles sont analysées, si l'unité est "degré" et si le format est un angle sexagésimal, il est converti en format décimal. Les entrées en degré sont mise à l'échelle pi/180 donc convertie en radian pour faire les calculs. 2.1.e) - Les entrées non conforment bloquent le calcul, les formulaire est remis en état en renvoyé avec les erreurs trouvées au lieu du résultat. La variable $DoCalcul passe à "false" et la variable $Problem reçoit la liste de tous les problemes trouvés. 2.2) - le formulaire est remis en état, [SECTFormBuilding] 2.2.a) - Les entrées faites par le visiteur sont restituées pour éviter d'avoir à retaper tout le formulaire pour une nouvelle requête ou corriger une erreur. Cette étape à toujours lieu, avec ou sans calcul du formulaire. 3) Programmation d'un nouveau formulaire, les étapes sont les suivantes : A partir de cette étape, il n'y a plus d'automatisme, les calculs diffèrents pour chaque page à calculer. 3.1) - A partir d'ici les entrées sont vides si elles doivent être calculées, ou ont une valeur valide. 3.2) - Déterminer ce que la page doit calculer, l'équation de base 3.3) - Déterniner les équations à calculer réciproques en fonction des paramètres présents 3.4) - Verifier qu'il n'y a pas de paramètre manquant ou surabondant pour permettre un calcul. 3.5) - Vérifier les divisions par 0 pour toutes les équations et exclure les cas, 3.6) - Controler les limites acceptables pour les paramètres, ex: somme de 2 angles d'un tiangle >0 et <pi, division par 0, 3.7) - Copier les variables du formulaire sur des variables en rapport avec le calcul ex : pour longueur a valeur => $laV=$inValB[index], unité coef => $laUc=$inUcoef[index] avec index correspondant à longueur a 3.8) - Vérifier les paramètres présents if(is_numéric($inValB[index]) Il n'est pas possible de traiter tout les cas possibles indivuduellement pour les équations complexes. Il y a pour n entrées 2e(n) solutions à traiter soit pour 10 entrées 1024 solutions. Donc n'envisager que les solutions possibles, pour toutes les autres, renvoyer un texte générique. ex : Pour un tiangle il faut donner 3 longueurs, ou 2 longueurs et 1 angle, ou 1 longueur et 2 angles. Cela fait déjà beaucoup de test (environ 15), pour tous les autres préparer une formule renvoyé telle que,: Pour calculer tous les paramètre cités dans cette page, vous devez fournir 3 longueurs, ou 2 longueurs et 1 angle, ou 1 longueur et 2 angles, veuillez contrôler vos entrées. 3.9) Pour chaque cas correct programmer les étapes et les calculs du formulaire.
Récapitulatif des test à effectuer pour la programmation des formulaireCes tests sont énumérés ci-dessous (voir liste et tableau) Liste des types de tests sur données envoyées par $_POST["xxx"] des formulaires.Les "strings texte" des formulaires sont reçues par le serveur pour permettre à celui-ci de calculer la page renvoyée au poste client.
Tableau de synthèse des tests déterminant le type de donnée des formulairesTous les tests peuvent être effectués (pour un monbre valide) de la même manière sur les deux tableaux $inValB[xxx] et $tabCalcul[xxx]) sauf pour la valeur "" (vide ou espace(s)). Pour cette dernière valeur, dans le tableau $inValB[xxx]) il y a le message d'erreur "Valeur manquante". Donc pour standardiser les tests, ils seront tous effectués sur le tableau $tabCalcul[xxx]).
TODO modifier le formulaire pour qu'il accepte d'avoir 0 ou plusieurs champs libres dans la zone de renseignement. S'il s'agit d'un formulaire de convertion, il n'y a pas de champs non renseigné avec une valeur. S'il sagit d'un formulaire de trigo sur le triangle quelconque, plusieurs cas sont possibles trois paramètres, permettent d'en calculer cinq autres. Modifier le formulaire pour qu'il prenne en compte des différentes manières de calculer en fonction des paramètres POSTER |