L’analyse de la base¶
Les informations de la base sont analysées par la méthode « constructeur » de gen.class.php
La construction des formulaires se fait suivant 5 types de champs reconnus par le générateur:
- string : chaîne de caractère
- int : nombre (entier ou décimal)
- date
- blob : texte
- geom : geometry (pour postgres)
Type de champs¶
la champ String est du type openMairie (méthode setType()):
- text dans le cas général
- hiddenstatic si modification pour clé primaire
- select pour clé secondaire
Le champ date est du type openMairie date avec calendrier et java script de contrôle de saisie de date
(La date est au format français JJ/MM/AAAA)
le champ Int est du type openMairie (methode setType())
- hidden si clé primaire en ajout
- hiddenstatic si clé primaire en modification
- text avec contrôle numérique en javascript
- select pour clé secondaire
Le champ Blob est du type openMairie textarea
La longueur et la largeur sont définis en fichier de paramétrage form.inc
La taille n est pas pris en compte dans la longueur d’enregistrement
Les paramètres de dyn/form.inc permettent d’établir la longueur et la largeur d’affichage d’un blob :
$max=6; // nombre de ligne blob
$taille=80; // taille du blob
Les champs de type geometry sont des champs geom (accès a la fenetre tab_sig.php)
Equivalence type mysql / type openMairie¶
type mysql (longueur) tableinfo -> type openMairie
Int (taille mysql) -> Int
Date (10) -> date
Blob (65535) -> Blob
Char (taille mysql) char -> String
tinyint (4) tinyint -> Int
smallint (6) smallint -> Int
Mediumint (9) mediumint -> Int
Bigint (20) bigint ->Int
Float (12) Real -> Int
Double (22) Real -> Int
Decimal (11) Real -> Int
Text (65535) Blob -> Blob
Tinyblob (255) blob ->Blob
Mediumblob 16777615 Blob -> Blob
Mediumtext 16777215 Blob -> Blob
Longtext -1 blob -> Blob
Longblob -1 Blob -> Blob
Tinytext 255 Blob - -> blob
Equivalence type pgsql / type openMairie¶
L’information fournie par postgresql est moins complète que celle de mysql surtout au niveau de la longueur des champs « string » où il est fourni :la longueur de stockage qui est égal à -1 quand le stockage est variable
type pgsql (longueur) type tableinfo si different -> type openMairie
Bigint (8) int8 -> int
Smallint (2) Int2 -> Int
Integer (4) Int4 -> Int
Real (4) Float4 -> Int
Doubleprecision (8) Float8 -> Int
Numeric (20) Numeric -> Int
Money (8) Money -> Int
Char (1) Char -> String (Quelque soit la longueur= 1)
Character (-1) Bpchar -> String (Utilisation de la longueur d'affichage)
Character varying (-1) Varchar -> String (Utilisation de la longueur d'affichage)
Text (-1) text -> blob (Utilisation des paramètres de form.inc)
Date (4) Date -> Date (Utilisation des paramètres de form.inc -
$pgsql_longueur_date)
geometry -5 -> geom
Pour postgresql, il est proposé dans form.inc 2 variables qui sont avec la version 4.2.0 inutiles car les longueurs sont gérées par le générateur (valeurs négatives)
$pgsql_taille_defaut = 20; // taille du champ par défaut si retour pg_field_prtlen =0
$pgsql_taille_minimum = 10; // taille minimum d affichage d un champ
Attention, pour les champs geom, il faut gérer la carte à chercher pour l affichage de la carte en fenêtre
exemple de surcharge de la méthode setSelect pour afficher la carte dossier (de la table om_sig_map)
if($maj==1){ //modification
$contenu=array();
$contenu[0]=array("dossier",$this->getParameter("idx"));
$form->setSelect('geom',$contenu);
}
Nom de champ et nom de table¶
Attention au nom de tables ou de champs, évitez les termes SQL : match, table, index, type, len … ou openMairie : objet pour les noms de champs ou table
Les règles suivantes sont spécifiques au générateur pour reconnaître les clés primaires et les clés secondaires :
la cle primaire de la table a le même nom que la table
le cle secondaire a le même nom que la table fille