SPIP-Contrib

SPIP-Contrib

عربي | Deutsch | English | Español | français | italiano | Nederlands

288 Plugins, 197 contribs sur SPIP-Zone, 175 visiteurs en ce moment

Accueil > Administration et BDD > Bases de données > TableDATA > Utiliser les tables complémentaires dites aussi TABLES EXTRA

Utiliser les tables complémentaires dites aussi TABLES EXTRA

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

30 mai 2009 – par Christophe Boutin – commentaires

5 votes

« 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
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
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

P.-S.

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

Dernière modification de cette page le 15 octobre 2009

Retour en haut de la page

Vos commentaires

  • Le 19 juillet 2012 à 14:04, par Alain Descoubès En réponse à : Utiliser les tables complémentaires dites aussi TABLES EXTRA

    Bonjour,

    je viens de migrer un site sous SPIP3 (www.comite-terrasse.org).
    Naturellement je sauvegarde la base réelle pour la restaurer en local sur un site lui aussi migré en SPIP3.
    Je découvre que les tables externes sont bien sauvegardées mais ne sont pas restaurées.
    Comme dans les versions précédentes ces tables externes sont bien décrites dans le fichier mes_options.php du répertoire config.

    Y a-t-il un changement concernant la restauration des tables externes ?

    Cordialement
    Alain

    Répondre à ce message

  • Le 15 juillet 2009 à 02:51, par yollson En réponse à : Utilisation de tables externes non spip

    Bonjour,
    J’ai un site qui était déjà existant chez Online.net. J’ai souhaité refaire le site avec spip en utilisant la base de données existante chez cet hébergeur, mais dont les tables n’ avaient pas été crees avec spip. En general lorsque les tables de ma base MYSQL sont crées avec spip, aussitot que j’indique la base de données vers laquelle doit pointer mon site, sur la page d’accueil apparaissent exactement le nombre d’articles stockés dans ladite base, que je souhaite voir afficher en page d’accueil et tous les répertoires existants avec leurs articles.
    Comment obtenir dans le cas d’un site que je fais avec spip et dont les tables de la base utilisée n’étaient pas faites avec spip, mes dits articles et répertoires stockées dans la base existante ?
    Le but est de pouvoir conserver les articles existants.Le site a de tonnes d’articles que je ne veux pas reprendre un apres l’autre. Il y a surement qq chose que je ne fais pas bien.
    Toute aide sera grandement appréciée.

    Répondre à ce message

  • Le 3 juin 2009 à 12:26, par ? En réponse à : Utiliser les tables complémentaires dites aussi TABLES EXTRA

    Bonjour,
    Comment peut t-on simplement remplir une table extra à partir des informations d’un formulaire saisie par un visiteur identifié ?

    y a t-il des commandes SPIP ou doit t-on utiliser php/sql..

    merci

    Répondre à ce message

  • Le 31 mai 2009 à 22:44, par JLuc En réponse à : Utiliser les tables complémentaires dites aussi TABLES EXTRA

    Hello,

    est-ce qu’il n’y a pas une jointure automatique si les 2 tables ont un champ de même nom ?

    La doc http://www.spip.net/fr_article3368.html indique :

    Dans un squelette comportant BOUCLE_a(table table1 ... tablen), les
    tables supplémentaires seront vues comme des candidates à une
    jointure, à travers les champs homonymes. Des exemples plus concrets
    seront donnés dans la documentation

    Auquel cas ce serait bien plus simple d’appeler ’id_machine’ les champs ’NUMACHINE’ et ’IDMACHINE’ (ou au moins avec le même nom...) et la jointure se ferait toute seule dans la boucle sans avoir besoin de spécifier idmachine=#NUMACHINE.

    • Le 31 mai 2009 à 23:44, par Christophe Boutin En réponse à : Utiliser les tables complémentaires dites aussi TABLES EXTRA

      Bonsoir Jean-Luc,

      C’est très juste.

      Je propose une modif :

      1) Lister toutes les valeurs : On décrit cette méthode.
      <BOUCLE... (CAPTEURS MESURES)> avec une jointure automatique sur un même nom de champ.

      2) Lister toutes les valeurs avec une rupture sur chaque capteur : On reprend les 2 boucles imbriquées avec la jointure explicite.

      Qu’en penses-tu ?

      Merci pour ton message, ça permet d’enrichir le contenu.

      Christophe

    • Le 1er juin 2009 à 13:37, par JLuc En réponse à : Utiliser les tables complémentaires dites aussi TABLES EXTRA

      Oui, ce serait bien, ça permettrait de bien comprendre et d’aller un peu plus loin. ( Faudrait vérifier les exemples aussi !)

      Je recommande le nom de champ « id_machine » car ainsi ce serait le même formalisme pour la dénominations des références que les objets standards de spip (id_article, etc) mais comme ces tables justement externe existent peut être indépendamment de spip, elles ne respectent pas forcément son formalisme...

    Répondre à ce message

Répondre à cet article

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 Les choses à faire avant de poser une question (Prolégomènes aux rapports de bugs. )
Ajouter un document

Retour en haut de la page

Ça discute par ici

  • Japibas, squelette responsive

    11 octobre 2013 – 95 commentaires

    Japibas est un squelette responsive, multilingue (français, anglais et espagnol), dont l’habillage conviendrait à un site de type blog ou webzine. Le graphisme est inspiré du template Wordpress Japibas réalisé par Jesper Johansen et distribué sous (...)

  • GIS 4

    11 août 2012 – 1417 commentaires

    Présentation et nouveautés La version 4 de GIS abandonne la libraire Mapstraction au profit de Leaflet. Cette librairie permet de s’affranchir des librairies propriétaires tout en gardant les mêmes fonctionnalités, elle propose même de nouvelles (...)

  • Plugin Domlang : Domaines par secteur de langue

    4 septembre – commentaires

    Domlang est un plugin qui permet d’associer un nom de domaine ou un sous-domaine à un secteur de langue. Ce plugin convient pour un site qui utilise des secteurs de langues. En configuration, pour chaque secteur, vous pourrez définir une URL (...)

  • Menu de langues sous forme de liens

    30 novembre 2009 – 121 commentaires

    Par défaut, le menu de langue de SPIP s’affiche : Sous la forme d’une liste déroulante ; En affichant toutes les langues du site, qu’elles soient utilisées ou non (c’est à même si elles ne sont pas affectées à au moins un article ou une rubrique) ; Sans (...)

  • Agenda 2.0

    3 novembre 2008 – 1098 commentaires

    Voici la version pour SPIP 2.0 du Plugin Agenda pour SPIP 1.9.2, avec une interface remaniée pour encore plus de plaisir. Pour une documentation concernant l’utilisation d’Agenda 3 pour SPIP 3, veuillez pour l’instant vous référer à SPIP 3, Agenda (...)