Utiliser les tables complémentaires (dites aussi tables extra)

Comment les créer et les utiliser dans vos squelettes...

Quelques explications simples et rapides :
-  pour créer vos tables complémentaires (ou EXTRA)
-  et pour les utiliser dans vos squelettes.

« la possibilité de SPIP de traiter simplement des tables externes est trop méconnue, mal documentée et pourtant un point fort très important. »

Ce commentaire de Nicolas concernant mon article sur le Plugin TableDATA m’a interpelé et m’a donné l’idée d’aller plus loin dans les explications.

Ton commentaire, avis : « la possibilité de SPIP de traiter simplement des tables externes est trop méconnue, mal documentée et pourtant un point fort très important. » m’a donné une idée...

Un exemple d’utilisation

CHAMPS EXTRA ou TABLE EXTRA

Sur mon site, j’ai des images qui représentent des graphes, on me demande d’afficher des valeurs pour chaque document.

1. Une idée pourrait être d’utiliser les Champs EXTRA, et d’ajouter des champs à la table document, pourquoi pas...

Mais cette application ne concerne qu’un secteur du site. Il est donc dommage d’alourdir tout le site pour cela.

2. Dans ce cas, je place toutes les valeurs dans un nouvelle table mesure et je crée un champ pour faire le lien avec l’id_document. Ainsi je ne fais pas peser cette structure sur tout le site.

Pour utiliser cette table mesures :

Il me suffira dans ce secteur de créer des squelettes particuliers avec des boucles MESURES. Spip ne connaissant pas cet élément, recherchera automatiquement la table mesure.

— -

Comment réaliser cela

Dans la suite : Nous prendrons comme exemple 2 tables.

Table MACHINES
Descriptif de la table
Nom ChampContenu
NUMMACHINE identification de la machine
NART Numéro de l’article spip relatif à cette machine

Clé primaire sur le champ “NUMMACHINE”

Table MESURES
Descriptif de la table
Nom ChampContenu
IDMACHINE identification de la machine de mesure
NANNEE année de la mesure
NSEMAINE Numéro de la semaine
VALMESURE valeur mesurée pour cette semaine

Clé primaire sur les champs “IDMACHINE”,“NANNES” et “NSEMAINE”

La jointure se fera par MACHINES.NUMMACHINE=MESURES.IDMACHINE

A - Créer les tables

Pour créer une nouvelle table : il vous suffit d’utiliser un programme comme PhpMyAdmin.

La base de données doit être capable de pointer de manière unique, l’enregistrement sur lequel vous voudrez travailler (suppression, modification de valeur). Alors il est conseillé de créer une clé primaire avec un autoincrément. Ainsi lors de l’ajout d’un nouvelle enregistrement, MySql ajoutera automatiquement celui-ci avec un numéro (clé) unique.
Ce champ sera pointé avec l’opton NOT NULL.

Ensuite pour les autres champs, c’est en fonction du besoin.

Quelques précautions :
-  Ne pas mettre de caractères “.” ou “-” dans les noms de champs.
-  Placer une clé primaire sur la table cela permet d’identifier de façon unique chaque enregistrement.

B - Ajouter et gérer les données

Pour ajouter des enregistrements et gérer le contenu : modification et effacement d’enregistrement, vous pouvez utiliser le plugin TableDATA

C - Les boucles dans les squelettes

Comment afficher toutes les mesures de toutes les machines :

<BOUCLE_bouclemachine(MACHINES)>
  <B_bouclemesure>
     Pour la machine #NUMMACHINE<br/>
  <BOUCLE_bouclemesure(MESURES){idmachine=#NUMMACHINE}{}>
     #NANNEE/#NSEMAINE, mesure =  #VALMESURE unités.<br/>
  </BOUCLE_bouclemesure>
     <hr/>
  </B_bouclemesure>
</BOUCLE_bouclemachine>

Pour faire mieux, en filtrant suivant le numéro de l’article par exemple :
Il suffit d’ajouter à la première boucle un critère :

<BOUCLE_bouclemachine(MACHINES){nart=#IDARTICLE}>

Ici on voit la mise en œuvre de 2 boucles imbriquées en spécifiant le critère de la jointure entre les 2 tables.

C’est finalement très simple !

Voir un exemple  : Site de présentation de mesures puis cliquer sur “voir les mesures”

Voir aussi : Accés SPIP aux tables externes et jointures

Vos questions, permettront d’enrichir le contenu de cet article par des explications plus détaillées qui correspondront à vos besoins.

Discussion

Aucune discussion

Ajouter un commentaire

Avant de faire part d’un problème sur un plugin X, merci de lire ce qui suit :

  • Désactiver tous les plugins que vous ne voulez pas tester afin de vous assurer que le bug vient bien du plugin X. Cela vous évitera d’écrire sur le forum d’une contribution qui n’est finalement pas en cause.
  • Cherchez et notez les numéros de version de tout ce qui est en place au moment du test :
    • version de SPIP, en bas de la partie privée
    • version du plugin testé et des éventuels plugins nécessités
    • version de PHP (exec=info en partie privée)
    • version de MySQL / SQLite
  • Si votre problème concerne la partie publique de votre site, donnez une URL où le bug est visible, pour que les gens puissent voir par eux-mêmes.
  • En cas de page blanche, merci d’activer l’affichage des erreurs, et d’indiquer ensuite l’erreur qui apparaît.

Merci d’avance pour les personnes qui vous aideront !

Par ailleurs, n’oubliez pas que les contributeurs et contributrices ont une vie en dehors de SPIP.

Qui êtes-vous ?
[Se connecter]

Pour afficher votre trombine avec votre message, enregistrez-la d’abord sur gravatar.com (gratuit et indolore) et n’oubliez pas d’indiquer votre adresse e-mail ici.

Ajoutez votre commentaire ici

Ce champ accepte les raccourcis SPIP {{gras}} {italique} -*liste [texte->url] <quote> <code> et le code HTML <q> <del> <ins>. Pour créer des paragraphes, laissez simplement des lignes vides.

Ajouter un document

Suivre les commentaires : RSS 2.0 | Atom