DocumentationFormsTables

Ceci est une ARCHIVE, peut-être périmée. Vérifiez bien les compatibilités !

Article publié : ces notes et d’autres sont désormais publiées sur SPIP-Contrib ici Forms & tables - carnet de notes, donc il faut mieux y aller pour tout complément


Différence entre un formulaire et une table

-  un formulaire est dédié a la saisie de données dans l’espace public (collecte d’informations) ; les réponses sont stockées pour pouvoir les suivre/gérer/traiter, comme des forums... Ce qui est central ici c’est la collecte d’informations dans l’espace public, et le stockage est seulement destiné à du post-traitement

-  une table est une structure de données destinées à être utilisées dans les squelettes. Ce qui est central ici, c’est les données et leur manipulation pour les afficher dans les pages de l’espace public. La
saisie est juste un moyen de créer/modifier des données, mais pas unique (l’import/export csv en est un autre)

Le socle commun permet de disposer du formulaire de saisie associé, utilisable aussi bien dans l’espace privé que dans l’espace public si besoin. La définition de la structure de la table se fait par la définition de son masque de saisie, c’est-à-dire son formulaire de saisie.

(extrait d’un mail de Cedric sur spip-zone le 07/12/2006)

Pour définir une table, on définit ses champs à travers le
formulaire de saisie.
Chaque champ peut être :
-  spécifiant : il sera considéré comme pertinent pour
trier/filtrer/rechercher les données dans la table
-  public : les données de ce champ sont affichées dans les modeles ,
dans le cas contraire elle ne sont visibles que dans l’espace privé
-  obligatoire : le champ doit être rempli lors de la saisie

Par ailleurs, une aide contextuelle peut être définie pour chaque champ.
Le wrapping html permet de définir des encapsulations des champs dans la
vue donnée (typiquement pour faire du microformat), sur le format :
-  implicite : la donnée est inserée au milieu de l’encapsulation qui
peut comporter plusieurs tags

<div class='truc'></div>

-  explicite : la donnée est inserée a la place du $1

<a href='$1' class='truc'>$1</a>

Le plugin contient un exemple de structure hCard
(snippets/forms/hCard.xml) qui utilise ce format.
Mais la fonctionnalité encore incomplète, il manque la possibilité de
gérer une hiérarchie de div englobants. (Les fieldsets sont utilisés
pour gérer un premier niveau de groupe, mais il est nécessaire de
pouvoir faire des sous groupes, j’y refléchis).

Le hCard.xml contenu dans le plugin est importable à l’aide du plugin
snippets (1.9.2 uniquement) qui permet de gerer des imports/exports des
structure des tables&formulaires en xml. Un formulaire peut etre exporté
et réimporté dans un formulaire existant, auquel cas les champs y seront
ajoutés.

Les types de champ sont personnalisables, il y a un exemple dans
etc/forms_types_champs.xml. Cela permet de définir des formats qui n’ont pas de vocation a être en dur car ne correspondent pas a un besoin général. Pour le moment la vérification de format est limitée a un
preg_match sur une regexp, mais je pense a mettre un pipeline pour
permettre de créer des types de champs plus complexes.

Le plugin csv_import fonctionne avec les tables de forms&tables, et il
permet de faire de l’import/export csv des données (en ajout et mise a
jour si l’id_donnee est fourni).

Les tables définies dans forms&tables sont en fait toutes stockées dans
les mêmes tables physiques. Dans les squelettes, on utilise les boucles
FORMS_DONNEES et FORMS_CHAMPS sur le mode :

<BOUCLE_reponses(FORMS_DONNEES){id_donnee}>
<BOUCLE_champs(FORMS_CHAMPS){id_form}{par rang}>
#TITRE : #LESVALEURS{','}
</BOUCLE_champs>
</BOUCLE_reponses>

la balise #LESVALEURS permet d’éviter une boucle supplémentaire sur
FORMS_DONNEES_CHAMPS. Dans cette dernière boucle, #VALEUR retourne non
le champ sql brut mais la valeur en clair dans le cas ou il s’agit d’un
champ mot clé, select ou multiple. #VALEUR* retourne elle le champ sql brut.

sur la boucle FORMS_DONNEES,
-  le critère tout permet de récupérer les données non validées
-  le critère statut=.. de récupérer les données non publiées (par
défaut seules les données avec le statut publie sont retournées par la
boucle)
-  le critère id_mot=.. de récupérer toutes les données associées à un
mot clé. Cela suppose que la table comporte au moins un champ de type
mot clé

sur la boucle FORMS_CHAMPS
-  par défaut seuls sont retournés les champs public
-  le critère tout permet de récupérer tous les champs

Voila un petit aperçu des fonctionnalités, cela mériterait évidemment
une grosse doc que je n’ai pas du tout le temps de faire en ce moment.
(notamment sur l’utilisation avancée du plugin comme support pour
d’autres plugins : créations de tables sur structure xml, création d’un
type de table supplémentaire pour gérer des tables qui ne soient pas
mélangées avec celles du module tables par défaut, utilisation de l’API
d’interface liste/édition/modification ... des tables ....)

Cedric

Utilisation :

Insertion d’un formulaire dans une article :
Le formulaire créé s’insère dans un champ texte d’article ou de rubrique avec un modèle <formxx>
Voir spip contrib

Insertion des données de table dans un article
Un modèle simple <tablexx> permet d’afficher les données d’un table dans un article.


Premier article de présentation générale initié sur Spip-contrib
puisqu’il faut bien commencer par quelque chose .. c’est la http://www.spip-contrib.net/ecrire/...

vous ètes convié à y participer, soit via le forum de rédac, soit en vous proposant comme (co)rédacteur

Discussion

5 discussions

  • 1

    Bonjour,
    Je cherche désespérément à afficher dans le mail de réponse (squelette : form_reponse_email_admin.html) l’adresse et le lien vers le fichier joint dans via le formulaire. Etant un bidouilleur je n’arrive pas et ne comprends pas :
    Dans un squelette du site la boucle :

    <BOUCLE_lien_fichier(FORMS_CHAMPS){id_form}>
    [(#URL_SITE_SPIP|supprimer_tags)]/[(#LESVALEURS|supprimer_tags)]
    </BOUCLE_lien_fichier>

    focntionne, mais pas dans le fichier squelette de form_reponse_email_admin.html.

    Je n’arrive pas à manipuler la boucle :

    <BOUCLE_lien_fichier(FORMS_CHAMPS){id_form}>
    [(#LESVALEURS{','}|supprimer_tags)]
    </BOUCLE_lien_fichier>

    Pour faire apparaitre seulement le contenu du champ : fichier_1

    ou puis-je trouver de la doc à ce sujet, je tourne en rond depuis 8 heures !

    Bien à tous.

    • J’avance mais ne comprends pas si je retire le - entre les [ et la ( la balise ne renvoie rien ?

      <BOUCLE_reponses>
      <BOUCLE_form>
      Lien pour télécharger le fichier :    
      <BOUCLE_lien_fichier(FORMS_CHAMPS){tout}{id_form}{1,1}>
      http://www.idem41.com/[-(#LESVALEURS{','}|text-brut)]
      </BOUCLE_lien_fichier> 
      </BOUCLE_form>
      </BOUCLE_reponses>

    Répondre à ce message

  • tarentaise

    Bonjour,

    j’ai créé plusieurs tables qui utilise toutes des champs mots clés. Je cherche à récupérer dans une boucle le numéro du mot clé associé à une réponse pour le passer dans un lien. J’arrive à afficher la valeur ou le titre du mot clé sélectionné mais pas son numéro
    D’avance merci

    Répondre à ce message

  • J’ai crée une table dans spip je voudrais savoir comment on fait pour récupérer les données entrées dans le formulaire par une boucle pour l’afficher dans un article.

    les champs sont :

    nom
    adresse
    tel

    Merci

    Répondre à ce message

  • J’ai crée une table dans spip je voudrais savoir comment on fait pour récupérer les données entrées dans le formulaire par une boucle pour l’afficher dans un article.

    les champs sont :

    nom
    prenom
    Email

    Merci

    Répondre à ce message

  • bonjour,

    j’ai créé un formulaire avec des champs téléchargement de fichier, mais je ne retrouve pas mes fichiers téléchargés.
    Comment puis-je faire ?

    merci d’avance

    Répondre à ce message

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