Cette application a pour but de manipuler toutes sortes d'objets, de les ranger dans une structure universelle afin de pouvoir enrichir cette base d'objets à l'aide de fiches de saisie et de pouvoir ensuite effectuer toutes sortes de recherches en vue de retrouver très précisément ce que l'on veut.
Contrairement à la recherche plein texte des moteurs de recherche type Google ou équivalents, les données ne sont pas stockées en vrac dans des textes.
Au contraire, ici, on ne stocke que des données élémentaires telles qu'un nom de personne, un prénom, une ville, une couleur, une plante, etc ... Chaque donnée élémentaire, par exemple Pierre ou Paul, ... a un père, ici le prénom, appelé objet générique. De même pour les noms de personnes, les villes, les couleurs, les numéros de téléphone, etc ...
Pour pouvoir enregistrer ou saisir une donnée élémentaire, il faut d'abord créer son objet générique. On dispose alors d'un formulaire de saisie permettant d'enregistrer des occurrences de l'objet générique. Par exemple si on crée l'objet générique Prénom, il devient possible d'enregistrer ses occurrences telle que Pierre, Paul, Jacques, Marie, Lucie, etc ...
De la même façon on peut créer l'objet générique Nom de personne puis ensuite procéder à la saisie de ses occurrences Dupont, Durant, Duchmol, Carlier, Desprez, etc ...
Mais cette façon d'enregistrer les informations n'est pas pratique et de plus ne crée pas de liens entre les sortes d'objets !
C'est pourquoi l'application comprend également la notion de fiche de saisie, utilisable pour faciliter la saisie de nombreuses informations et surtout pour structurer ces informations.
Il faut d'abord créer une fiche générique qui servira de modèle pour toutes les futures fiches occurences.
Pour créer une fiche générique, il faut lui donner un nom et lui associer des données génériques.
Par exemple pour créer une fiche Contact, on lui associe l'objet générique Nom de personne, l'objet générique Prénom, l'objet générique Téléphone, Email, etc ... Pour chacun de ces objets génériques on peut en même temps définir un facteur de répétition; par exemple 2 noms, 3 prénoms, 2 numéros de Téléphone, 3 Email, etc ...
Cela signifie que l'on pourra saisir dans une occurrence de la fiche Contact, au maximum 2 noms, 3 prénoms, 2 téléphones, 3 email.
Une fois la fiche générique Contact créée on peut dès lors saisir de très nombreuses occurrences de fiches Contact qui correspondent à chacun de nos contacts.
De la même façon on peut définir différentes fiches génériques correspondant à chacun de nos besoins. Par exemple, si l'on souhaite définir un catalogue de plantes, on devra créer les objets génériques Nom de plante, Famille de plante, Description de la plante, Hauteur, Pays d'Origine, Période de floraison, Couleur, Rusticité, etc ... puis la fiche générique Plante que l'on associera à ces objets génériques.
Une fois cela fait, on pourra saisir les fiches occurrences correspondant à chaque plante.
Bien évidemment, on dispose d'outils pour retrouver facilement toute donnée enregistrée. Le premier outil de recherche est basé sur la connaissance de l'objet générique que l'on peut assimiler au type de la donnée. Par exemple si on précise le type Nom de personne et qu'on fournit le critère de recherche %u%, on retrouvera Dupont, Durant, Duchmol mais aussi les occurrences fiches correspondantes. On retrouvera donc toutes les associations entre données que nous avons prévues.
Le deuxième outil de recherche est plus intéressant car il permet de faire des recherches multi-critères. Cet outil est basé sur le choix d'une fiche générique. Une fois cette fiche choisie, apparaissent tous les types de données correspondants à cette fiche, par exemple Nom, Prénom, Téléphone, Mail. Cette fois on peut mettre un critère sur chacun de ces types, soit par exemple D% dans Nom, %e dans Prénom, 01% dans Téléphone. Cette recherche pourra trouver au moins un Dupont prénommé Hélène et ayant un téléphone de la région parisienne.
Le troisième outil de recherche dite brute permettra de fournir jusqu'à 10 critères et dix types de données quelconques.
Très important: tout couple (type de donnée, valeur de la donnée) est unique. Il n'y a qu'une seule occurrence d'objet Prénom Paul ! Mais cela ne signifie pas qu'il n'y a qu'un seul de nos contact qui puisse se prénommer Paul.
En fait l'application se compose essentiellement d'une table objet qui contient chaque objet générique et toutes ses occurrences uniques. Cette table contient aussi chaque fiche générique et toutes ses occurences fiches.
Les relations entre une fiche générique et les objets génériques est mémorisée dans une table relation qui contient des triplets; le premier élément composé de ce triplet est la clé primaire de la fiche dans la table objet. Le deuxième élément composant est la clé primaire de l'objet associé dans la table objet. Le troisième élément est le facteur de répétition défini pour la fiche. De même les relations entre une occurrence de fiche et les occurrences d'objet sont mémorisées de la même façon dans la table relation.
Ainsi si le prénom Paul apparaît dans les objets de plusieurs fiches quelconques, c'est la clé correspondant à l'occurrence objet Paul qui est dupliquée dans les triplets de la table relation. L'objet Prénom Paul reste bien unique dans la table objet.
Bien que la donnée élémentaire est le plus souvent de courte longueur, il est néanmoins possible d'enregistrer comme valeur de l'objet, un grand texte ou encore un chemin ou un lien vers un livre entier, vers une image, une vidéo, etc ...
Cette possibilité est offerte parce que le champ qui reçoit la valeur de la donnée est de taille conséquente (environ 16000 caractères), mais aussi parce que l'on associé à la donnée élémentaire une taille et un type qui sont mémorisés dans une table objet_type, une sorte d'extension de la table objet, utilisée uniquement pour les objets génériques.
Il sera possible d'associer à une fiche générique une autre fiche générique. Cela est nécessaire pour prendre en compte certaines nécessité des fiches. Par exemple il peut être utile d'associer à un contact plusieurs adresses. Or, cette adresse se compose d'au moins d'une ligne adresse, d'une commune, d'un code postal et d'un pays. Si le contact a plusieurs adresses, et pour lier correctement entre elles ces données élémentaires, il faut créer une fiche adresse à laquelle on associe la ligne adresse, la commune et le code postal. Et la fiche Contact est donc associée à cette fiche Adresse.
Comme indiqué dans le paragraphe précédent, il faut disposer d'un formulaire de création des objets génériques, d'un autre pour la création des fiches génériques. Il faut aussi pouvoir retrouver et modifier voire supprimer des objets génériques ou des fiches génériques. Soit 4 formulaires spécialisés.
Cliquer sur l'option menu correspondante. Une grille de saisie apparaît pour nous permettre de saisir le nom générique de l'objet (Libellé), son unicité min (réservé pour usage futur, 1 par défaut), sa taille maxi prévue (size) et son type (texte par défaut). Saisir ces informations puis appuyer sur le bouton Créer type objet.
La création du type d'objet sera refusée si celui-ci existe déjà.
Remarque: cette version prototype de l'application ne gère pas encore les types évolués tels chemin, lien, date, nombre, etc ... le type fiche est réservé à la création de fiches génériques.
Nom du formulaire: s1objet.php
Cliquer sur l'option menu correspondante. Une grille de saisie apparaît permettant de saisir le nom générique de la fiche et de sélectionner, parmi tous les objets génériques existants, ceux que l'on veut associer à cette fiche. En regard de chaque objet générique sélectionné préciser le facteur de répétition souhaité.
La version prototype de l'application propose un maximum de 9 objets génériques associés. Ce nombre est réglable lors de l'initialisation de l'application. On peut également associer une ou plusieurs fiches génériques (déjà créées préalablement) à la fiche que l'on est en train de créer. Le nom générique d'une fiche est toujours préfixé par Fiche . Ceci est utile pour distinguer les objets génériques des fiches génériques.
La création de la fiche générique sera refusée si celle-ci existe déjà sous le même nom.
Remarque: cette version prototype ne vérifie pas s'il existe une fiche existante associant les mêmes objets ou fiches génériques et dans les mêmes répétitions.
Nom du formulaire: s1fiche.php
Cliquer sur l'option menu correspondante. Une grille de saisie apparaît permettant de choisir le type d'objet voulu. Appuyer sur le bouton Valider choix.
Un nouvel écran s'affiche avec le nom de l'objet, son occurence mini (1 par défaut), sa taille et son type actuels. Tous ces champs peuvent être modifiés. Appuyer sur le bouton Enregistrer.
La modification sera refusée si le nouveau nom correspond à un nom d'objet générique existant déjà ou encore si le type fourni est fiche (réservé aux fiches!). Appuyer sur le bouton Terminer pour abandonner ce formulaire.
Nom du formulaire: r1objet.php
Cliquer sur l'option menu correspondante. Une grille de saisie apparaît permettant de choisir la fiche générique voulue. Pour chacune des fiches génériques existantes, on voit son nom (et sa clé d'identification) ainsi qu'un tableau avec les objets/fiches qui lui sont associées. Cliquer sur le bouton Modifier cette fiche si nécessaire. Une grille semblable à celle de création de fiche apparaît. On peut alors sélectionner d'autres noms d'objets ou de fiches génériques, en supprimer, modifier les répétitions. Par contre ces modifications sont interdites si des occurrences de cette fiche générique ont déjà été créées. Néanmoins on peut ajouter un nouvel objet/fiche générique en vue d'enrichir cette fiche générique.
Evidemment pour les occurrences fiches existantes, ce nouvel objet s'affichera vide.
Noms des formulaires: r1fiche.php et m1fiche.php
Comme indiqué dans le principe général, il faut disposer d'un formulaire de saisie des occurrences d'un objet générique, d'un formulaire de saisie des occurrences d'une fiche générique et d'outils de recherche par type de donnée ou par type de fiche.
Cliquer sur l'option menu correspondante. Une grille de saisie apparaît permettant de choisir le type d'objet (ou objet générique) voulu. Sélectionner un type d'objet puis appuyer sur le bouton Valider choix. Un écran s'affiche qui permet de créer en une fois jusqu'à 9 occurrences de l'objet type.
Saisir de un à 9 noms d'occurrences objet; appuyer sur Enregistrer pour valider la saisie.
Celle-ci peut être refusée si l'on tente de créer une occurrence objet qui existe déjà pour ce type.
Par exemple si le prénom Paul est déjà enregistré, il sera impossible de le créer une seconde fois. Néanmoins, il est possible de créer le nom de personne Paul même si le prénom Paul existe.
Rappel du principe général: c'est le couple type d'objet, valeur d'objet qui doit rester unique.
La saisie des occurrences objet est peu courante; en effet la saisie par type de fiche est souvent plus pratique.
Nom du formulaire: s2objet.php
Cliquer sur l'option menu correspondante. Une grille de saisie apparaît permettant de choisir le type de fiche (ou fiche générique) voulue. Sélectionner un type de fiche puis appuyer sur le bouton Valider choix. Un écran s'affiche qui permet de créer toutes les valeurs des données définies dans la fiche générique. Remarquer que chaque type de donnée est répété de 1 à n fois comme précisé lors de la création de la fiche générique. Par exemple pour la fiche Contact, il a été prévu 3 prénoms possibles. On peut donc ici en renseigner jusqu'à 3 maxi.
Renseigner tout ou partie des champs proposés puis appuyer sur le bouton Enregistrer pour valider la saisie de la fiche.
Cette saisie est toujours acceptée sauf incident système. En effet, si on entre Durant dans nom de personne et que l'occurrence objet (nom de personne,Durant) existe déjà, il n'y a pas création de doublon mais récupération de la clé de cette occurrence (nom de personne,Durant) utilisée pour créer la relation entre la fiche créée et l'objet nom de personne existant. A l'inverse, si on crée un nouveau nom de personne, par exemple Machintrucmuche, une occurrence d'objet (nom de personne,Machintrucmuche) sera créée puis sa clé récupérée pour créer la relation adhoc.
On réalise ici que la saisie par type de fiche est plus intéressante que la saisie par type de donnée car elle génère à la fois les nouvelles occurrences objet utiles et les relations entre l'occurrence fiche et les occurrences objet.
Certains champs peuvent être obligatoires comme le nom d'une personne par exemple. Dans cette version prototype, la caractéristique obligatoire ou facultatif n'est pas encore gérée.
Nom du formulaire: s2fiche.php
Cliquer sur l'option menu correspondante. Une grille de saisie apparaît permettant de choisir le type de donnée (ou donnée générique) voulue et de saisir un critère de recherche de cette donnée. Utiliser le joker % pour des recherches sur une partie du nom de l'objet, puis appuyer sur le bouton Rechercher. Un tableau s'affiche. Chaque ligne correspond à un objet trouvé. La première colonne contient la valeur de cet objet; c'est un lien sur lequel on peut cliquer pour obtenir des détails sur l'objet en vue de la modifier ou le supprimer.
Le bouton de suppression n'apparaît pas si cette occurrence d'objet est utilisée dans une relation occurrence fiche à occurrence objet (suppression interdite car déjà utilisé).
La modification de la valeur de l'objet peut être refusée si le nouveau nom correspond à un nom existant déjà pour ce même type d'objet.
Les colonnes suivantes sont les fiches qui référencent cet objet. C'est un lien sur lequel on peut cliquer pour faire apparaître le détail de cette fiche. Et il devient alors possible de la modifier ou de la supprimer.
Pour éviter l'apparition d'un énorme tableau d'occurrences d'objets trouvés, la recherche se doit d'être assez sélective. Une limitation à un maximum de 100 lignes est prévue et paramétrable.
La suppression d'une occurrence de fiche, ne supprime pas les occurrences objets car elles peuvent être utilisées par d'autres occurrences de fiches.
Dans cette version prototype, l'affichage des objets et des fiches trouvées n'est pas optimum.
Nom du formulaire: r2objet.php
Cliquer sur l'option menu correspondante. Une grille de saisie apparaît permettant de choisir le type de fiche (ou fiche générique) voulue. Sélectionner une fiche puis appuyer sur le bouton Valider choix. Un écran de recherche reprenant les types d'objets prévus pour cette fiche apparaît. Remarquer qu'il n'y a pas de répétition en recherche. Dans chacun des champs, on peut préciser un critère de recherche. Utiliser le joker % si nécessaire. Puis appuyer sur le bouton Rechercher. Un tableau s'affiche. Chaque ligne correspond à une occurrence de fiche trouvée. La première colonne est la fiche trouvée. C'est un lien sur lequel on peut cliquer pour faire apparaître le détail de cette fiche. Et il devient alors possible de la modifier ou de la supprimer.
Pour éviter l'apparition d'un énorme tableau d'occurrences d'objets trouvés, la recherche se doit d'être assez sélective. Une limitation à un maximum de 100 lignes est prévu et paramétrable.
La suppression d'une occurrence de fiche, ne supprime pas les occurrences objets car elles peuvent être utilisées par d'autres occurrences de fiches.
Dans cette version prototype, l'affichage des objets et des fiches trouvées n'est pas optimum.
Nom du formulaire: r2fiche.php
Cliquer sur l'option menu correspondante. Une grille de saisie apparaît présentant un champ long dans lequel l'utilisateur peut saisir des critères et des expressions logiques avec ou sans parenthèses. L'appui sur le bouton Rechercher déclenche l'analyse de l'expression de recherche et son interprétation. En retour s'affiche un tableau de lignes. Chaque ligne correspond à quelque chose de trouvé.
Remarque: La recherche brute n'est pas implémentée dans cette version prototype.
Ces fonctions sont réservées à l'administrateur de l'application. Elles permettent de voir physiquement comment sont organisées les tables objet, objet_type, relation et usager
Cliquer sur l'option menu correspondante. Une grille de choix de table apparaît. Sélectionner une table puis appuyer sur le bouton Valider. En retour au plus les 1000 premières lignes de la table s'affichent. Constante paramétrable. La première colonne de légende montre le nom des champs de la table. Chacune des lignes suivantes affiche les valeurs des champs dans la table.
Aucune modification n'est permise.
Le nombre de lignes de ces tables peut être très important d'où la limitation nécessaire pour réduire le volume de transfert des données et la durée.
Nom du formulaire: r0table.php
Cliquer sur l'option menu correspondante. Une grille de choix de table apparaît. Sélectionner une table puis appuyer sur le bouton Valider. En retour une page de 15 lignes de la table s'affiche. Constante paramétrable. Les boutons Page suivante, Page précédente permettent d'afficher les différentes pages de la table. La première colonne de légende montre le nom des champs de la table. Néanmoins la première colonne AMS est fictive; elle est réservée pour l'action à effectuer:
A pour ajouter une ligne après la ligne courante
M pour modifier la ligne courante
S pour supprimer la ligne courante
Attention:toute modification peut rendre l'application instable voire planter celle-ci. Il faut avoir très bien compris le fonctionnement de l'application et le contenu des différentes tables pour modifier !
Par exemple pour modifier le champ Texte d'une ligne, placer un M dans le champ action, modifier le champ Texte puis appuyer sur le bouton Enregistrer les modifications effectuées.
Nom du formulaire: m0table.php
Cliquer sur l'option menu correspondante. En retour un tableau apparaît. Sur la première ligne, dans chaque colonne sauf la première, on trouve le nom d'un formulaire ou programme. Dans la première colonne des lignes suivantes, on trouve le nom d'un sous programme ou d'une fonction de l'application. Dans les cases à l'intersection colonne, ligne il y a une croix ou rien. La croix signifie que le programme utilise le sous programme ou la fonction correspondant.
Si une ligne ne contient aucune croix, cela signifie que le sous programme ou fonction correspondant n'est pas utilisé et peut sans doute être supprimé. Si une colonne ne contient aucune croix, cela signifie que le programme ou formulaire correspondant n'utilise aucun sous programme ou fonction.
Ce tableau est plus utile aux développeurs qu'aux exploitants.
Nom du formulaire: r0refcro.php