Formulaire technique libre et gratuit www.saintpoint.org, site de calcul en ligne.

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.

Vous êtes ici: -> Accueil -> Pages personnelles -> Documentation du site -> Cahier des Charges page calcul

   

Documentation de création d'un nouveau formulaire.

Cette page à plusieurs buts:

- Créer un cahier des charges "formulaire", pour standardiser ce type de page.

- Donner des précisisions sur certains points à prendre en compte pendant la conception.

- Établir une procédure à respecter pendant la création du formulaire.

Les détails suplémentaires plus techniques ce trouvent dans le code de la page.

Introduction aux formulaires et organisation des pages de calcul.

Les formulaire de calculs sont établis sur la base d'une page préprogrammée. Une bonne partie des controles sont réalisés de manière automatique pour augmenter la fiabilité et réduire de temps de développement. Celà implique l'application d'une méthode de programmation à respecter lors de la création d'un formulaire pour que les contrôles soit efficaces. Autre point important, ce chablon ou patron plus ou moins prêt à l'emploi permet d'avoir une homogénéité de présentation et de développement des pages. C'est ce qui est présenté sur cette page.

Présentation visuelle et découpage/organisation de la page.

La page est découpée en trois sections.

1) zone de présentation du contexte du formulaire et des paramètres pris en compte pour les calculs.

Cette zone est destinée à visualiser s'il se peut un cas général à qui peut servir ce formulaire.

- Cette zone est imprimable, mais elles ne correspond pas aux paramètres envoyés par le formulaire.

Le schéma de découpage de cette zone est présenté ci-dessous.

Titre de la page du formulaire.

Ce titre est en partie pédéfini sous la forme :

Formulaire de calcul des paramètres en rapport avec le(s) "titre de page", repris dans les balise html (DataBase).

 

Zone graphique d'illustration de la page.

Montrant une application typique

Donnant de détails supplémentaires

 

Zone texte d'illustration de la page.

Listant les paramètres pris en compte dans le calcul

Reprenant l'illustration en donnant des détails

Donnant l'unité SI prise en compte pour les calculs

 

Zone texte du mode d'emploi de la page, cette partie peut donner quelques astuces d'application du formulaire.

Description d'une application typique, détail des conditions d'utilisation, des paramètres à rentrer.

Astuces sur des applications moins évidantes du formulaire

 

2) zone de renseignement du formulaire

Cette zone est destinée à configurer et à donner les bons paramètre au formulaire.

Le formulaire calcul le(s) résultat(s) s'il a tous les paramètres, sans en avoir de sur-abondant.

- Cette zone n'est pas imprimable, pour éviter du gaspillage de papier et un découpage empirique lors de l'impression.

Le schéma de découpage de cette zone est présenté ci-dessous.

zone de renseignement de la page de formulaire,

Cette zone est destinée à fournir les renseignements minimums pour permettre les calculs.
Quand le formulaire trouve un champ vide, il essaie de le calculer dès qu'il a tout les autres renseignements nécessaires.
Dans la mesure du possible, tous les champs seront calculés, mais il se peut qu'il ne le soit pas encore, pour diversses raisons. (manque de temps, oubli, ou cas jugé peu important)

 

Zone formule utilisée

Formule générale pour rappel et vérification.

Cette formule est toujours donnée en unité SI

 

Zone paramètres

Nom abrégé du paramètre
+ nom détaillé, + rappel de l'unité SI
utilisée pour le calcul.

 

Précision de calcul

Arrondi du résultat,
10-3 par défaut
de 100 à 10-15

 

Zone option de calcul

Partie facultative, permet de
choisir entre plusieurs solutions.

Unité pour calculs annexes

Le calcul peut donner d'autres résultats
Ils seront exprimés avec cette unité.

Tableau d'introduction des paramètres de calcul

Permet de donner les valeurs et une mise à l'échelle des valeurs en entrée.
Les champs peuvent être précisés :

  • - obligatoires (marqués d'un astérisque rouge, calculs pas encore effectués sans de ce critère),
  • - non paramétrables (marqués d'un carré rouge, calculs pas encore effectués en fonction de ce critère)
  • Si le formulaire est publié avec un de ces critères, un cas non programmé peut le devenir suivant les besoins. Cela permet une publication plus rapide des formulaires.

Obtension d'un résutat sur une unité autre que celle du SI :
Si on fixe une unité autre que l'unité par défaut sur un champs vide, le résultat sera alors converti en cette unité.

 

 

3) Zone de présentation des résultats.

Cette donne les résultats du calcul demandé, ou renseigne sur le pourquoi d'un calcul non effectué.
Cette zone est imprimable, elle retourne tous les renseignements utilisés pour la tâche demandée.

Tableau de résultat du formulaire.

Fourni plusieurs type de renseignements, si pas assez ou trop de paramètres, le formulaire dire ce qu'il ne comprend pas.
Il renvoie la formule utilisée et les paramètres entrée sur la page pour le calcul.

 

Rappel de la formule de bas de calcul

Et éventuellement les cas particuliers

 

Résultat calculer par le formulaire

Formule appliquée pour trouver ce résultat, pour contrôle du formulaire,
Si d'autres détails sont intéressants ils apparaissent ici.

Rappel des entrées fournies au formulaire

 

 

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.
Donc pendant la création, contrôler, ou en cas de problème, activer les variables $debugLoc pour activer le debug local dans la page formulaire !
La ligne en cours, les noms, et l'état des variables apparaitront dans le formulaire html pour voir et comprendre ce qu'il se passe.

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>&nbsp;=&nbsp;force&nbsp;sur&nbsp;le&nbsp;levier&nbsp;de&nbsp;la&nbsp;clef&nbsp;<b class=\"rem\">[N]&nbsp;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.
Valeur $_POST[xxx] => sens de modif des data =>

Valeurs envoyées par le formulaire

- (texte et radian) frenchNumInput($_POST[xxx]) => valeurs ou erreurs dans $inValB[xxx]

- (degré uniquement) CMAdegSexa2dec($_POST[xxx]) => valeurs ou erreurs dans $inValB[xxx]

- l'erreur "Valeur manquante" indique $_POST[xxx]="", il y a d'autres types d'erreurs.

- séparateur décimal "," ou 59°59'60" converti en "."

 

Valeur $inValB[xxx] => sens de modif des data =>

valeurs numériques brutes

ou textes d'erreurs provenant des fonctions

- texte, degré et radian "Valeur manquante" remplacées par "" dans $tabCalcul[xxx]

- valeurs numérique de $inValB[xxx] sont multipliées par $inUcoef[xxx] dans $tabCalcul[xxx]

 

 

Valeur $tabCalcul[xxx]

Ce tableau contient "" (valeur string vide) ou les valeurs utilisable pour les calculs

L' échelle des valeurs respecte les formules.

Si une formule est donnée en milli-unité son coef sera "1"

 

Valeur texte $_POST[xxx]

Texte non mumérique

double séparateurs décimaux "," ou "."

Valeur degré invalide

Valeur non valide

Valeur $inValB[xxx]

Valeur non numérique degré non sélectionné

Valeur degré : non numérique si degré sélectionné

Valeur $tabCalcul[xxx]
"" (string vide)

 

test isset($inValB[xxx]) = true

test isset($tabCalcul[xxx]) = true

test is_numeric($inValB[xxx]) = false

test is_numeric($tabCalcul[xxx]) = false

test empty($inValB[xxx]) = false

test empty($tabCalcul[xxx]) = true

Valeur texte $_POST[xxx]

"" ou " " (vide ou que espaces)

Valeur manquante (a calculer)

Valeur $inValB[xxx]

"Valeur manquante"

Valeur $tabCalcul[xxx]

""(string vide)

test isset($inValB[xxx]) = true

test isset($tabCalcul[xxx]) = true

test is_numeric($inValB[xxx]) = false

test is_numeric($tabCalcul[xxx]) = false

test empty($inValB[xxx]) = false

test empty($tabCalcul[xxx]) = true

Valeur texte $_POST[xxx]

"0" ou "0.0" ou "0,0"

Valeur souvent non valide, mais ?

Valeur $inValB[xxx]

"0"

Valeur $tabCalcul[xxx]

"0"

test isset($inValB[xxx]) = true

test isset($tabCalcul[xxx]) = true

test is_numeric($inValB[xxx]) = true

test is_numeric($tabCalcul[xxx]) = true

test empty($inValB[xxx]) = true

test empty($tabCalcul[xxx]) = true

Valeur texte $_POST[xxx]

radian (décimal sans conversion)

degré décimaux avec séparateur décimal "." ou ","

degré sexagésimaux avec séparateur ° et '0

59°59'60 Valeur valide

Valeur $inValB[xxx]

"60" si degré (converti en décimal)

Valeur $tabCalcul[xxx]

"1.04719755111966"(converti en radian)

test isset($inValB[xxx]) = true

test isset($tabCalcul[xxx]) = true

test is_numeric($inValB[xxx]) = true

test is_numeric($tabCalcul[xxx]) = true

test empty($inValB[xxx]) = false

test empty($tabCalcul[xxx]) = false

Valeur texte $_POST[xxx]

30,5 avec séparateur décimal "," ou '.'

Valeur valide

Valeur $inValB[xxx]

"30.5" (séparateur décimal "," converti en '.')

Valeur $tabCalcul[xxx]

"3.05"(converti échelle SI) $inUcoef[xxx]

test isset($inValB[xxx]) = true

test isset($tabCalcul[xxx]) = true

test is_numeric($inValB[xxx]) = true

test is_numeric($tabCalcul[xxx]) = true

test empty($inValB[xxx]) = false

test empty($tabCalcul[xxx]) = false

Récapitulatif des test à effectuer pour la programmation des formulaire

Ces 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.
A l'appel de la page, aucun $_POST["xxx"] n'est reçu puisque on ne sait pas encore ce que le visiteur du site désir.
Ce qui veut dire que le premier test à faire est de tester si un $_POST["xxx"] a eu lieu pour ne pas voir une page truffée d'erreur en faisant des tests sur des $_POST["xxx"] innexistants.

Ce test est fait de la manière suivante :
   -  avec if(isset($_POST[$xxx])){ "effectuer les calculs avec paramètres"; } else { "afficher la page par défaut"; }
   -  ou avec switch (isset($_POST[$xxx])) { case true : "effectuer les calculs avec paramètres" break; default : "afficher la page par défaut"; }.

Quand le visiteur valide le formulaire avec "entrer" ou avec le bouton "calculer", le formulaire est renvoyé au serveur, cette fois avec d'autres paramètres. Ces paramètres visiteur peuvent contenir des entrées correctes, mais aussi tout et n'importe quoi. Ce qui provoquer des erreurs de tous type sur la page. Pour éviter çà, les contrôle suivants sont fait.

 

  • - test entrées non interprêtables en numérique, ces entrées sont invalidées, le formulaire dont la tâche est faire des calculs n'accepte pas le texte. Le serveur passe en revue toutes les entrées, il enregistre toutes les entrées non numériques, et renvoie le formulaire en état pour pour corriger les erreurs de saisie plus facilement (pas besoin de tout retaper les entrées). Aucun calcul n'est réalisé si un paramètre est numérique.
  •  
  • - test entrées vides ou ne comprenant que des espaces, ces entrées sont des valeurs à calculer. Cette caractèritisque permet de déterminer de quels paramètres on dispose pour appliquer la formule. On appliqura dons la formule réciproque permettant le calcul de ces données. Les paramètre vides seront retournés dans l'unité demandée à coté du champ resté vide.
  •  
  • - test entrée "0" (zéro) ces entrées sont a surveiller. S'il n'est pas interdit d'avoir certains paramètre nuls, il faut prêter une attention particulière aux divisions par 0 qui provoque inévitablement une erreur. D'un manière générale, tout paramètre "0" ou tout diviseur d'une équation devra être testé avant d'exécution un calcul.
  •  
  • - test entrées en degré ou radian, dans les champs déclarés comme acceptant les valeurs angulaires, on a trois cas différents :
    •       - entrée en radian, cette entrée est traitée comme une nombre classique, l'entrée doit pouvoir être interprêtable comme un nombre. (voir cas suivant).
    •       - entrée en degré décimaux (séparateur décimal "," ou "."), cette entrée est convertie en un nombre (voir cas suivant) lui-même converti plus loin en radian pour les calculs PHP.
    •       - entrée en degré sexagésimaux (séparateurs obligatoire degré °, minute ' (apostrophe), [seconde " (guillemet), facultatif mais toujours placé à la fin du string]. S'il n'y a pas de seconde on doit le dire en écrivant : -59°60'0 pendant la conversion, le nombre de seconde et de minute, s'ils sont égal ou plus grand que 60 sont converti en unité supérieure. L'exemple donné ici sera interprêté comme -60°. Si l'angle est un nombre négatif, le signe "-" doit être inscrit une seule fois avant ce nombre. Le signe "-" au milieu du nombre interdira tout calcul. Ce nombre sera converti plus loin en radian pour les calculs PHP.
    •  
  • - test entrées numériques Ce sont celles qui donnent la posibilité d'effectuer les calculs. Si ces entrées sont en nombre suffisant, les autres paramètres pourront être calculés. S'il y en manque le calcul ne peut pas être fait par manque de renseignement. S'il y en a trop, le calcul n'est pas fait non plus parce que si les paramètres ne correspondent pas exactement au valeurs reciproques, il y aura deux réponses possibles donc une ne correspondant à ce qui est demandé. Le mde d'emploi spécifie les valeurs suffissantes et nécessaires pour ne donner que le bon nombre de paramètre. En cas de manque ou excès de paramètre, un massage sera retourné, spécifiant comment les paramètres ont étés compris par le serveur, et s'il manque ou s'il ya trop d'entrées.
  •  

Tableau de synthèse des tests déterminant le type de donnée des formulaires

Tous 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]).

Valeur non numériques

erreur de saisie, ou ???

Valeur invalide

 

Valeur " " (espace(s))

erreur de saisie, ou ???

Valeur valide (="" vide)

 

Valeur 0 (zéro)

0 ou 0.0 ou 0,0

Valeur valide

 

Valeur radian, degré décimal

nnn nnn.nnn nnn ou nnn nnn,nnn nnn

Valeur valide

 

Valeur radian, degré sexagésimal

367°179'65 ou 8°0'5 ou -351°59'54,999 999

Valeur valide

 

isset($tabCalcul[xxx])=true

isset($tabCalcul[xxx])=true

isset($tabCalcul[xxx])=true

isset($tabCalcul[xxx])=true

isset($tabCalcul[xxx])=true

is_numeric($tabCalcul[xxx])=false

is_numeric($tabCalcul[xxx])=false

is_numeric($tabCalcul[xxx])=true

is_numeric($tabCalcul[xxx])=true

is_numeric($tabCalcul[xxx])=true

empty($tabCalcul[xxx])=false

 

empty($tabCalcul[xxx])=true

 .

empty($tabCalcul[xxx])=true

 .

empty($tabCalcul[xxx])=false

 .

empty($tabCalcul[xxx])=false

 

 

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