Yohann Prigent a écrit :
en fait moi c'est plutot pour la màj de tables que j'ai du mal... Connexion · GitLab
Le 20 novembre 2008 20:35, cedric.morin@yterium.com <mailto:cedric.morin@yterium.com> <cedric.morin@yterium.com <mailto:cedric.morin@yterium.com>> a écrit :
Acces restreint utilise les points d'entrée disponibles dans SPIP
2.0 et pas encore documenté !
Cédric
Le 20 nov. 08 à 20:31, Marc Valleteau de Moulliac a écrit :
Eh bien, justement non ... C'est de ça dont je me suis inspiré,
et cela ne marche absolument pas du tout !!!!
Je viens de réussir en "copiant bêtement" la façon de faire dans
Accès Restreint, mais je ne comprends absolument pas pourquoi ça
marche !! Et cela n'a rien à voir avec les présentations des
deux articles que tu cites, hélas !!
Merci tout de même 
----
Marc
Le 20 nov. 08 à 20:22, assobachant a écrit :
ceci peut il vous aider ?
http://www.plugandspip.com/?Installer-ses-tables-depuis-son
http://www.plugandspip.com/?Ajouter-des-nouvelles-tables-sur
Yohann Prigent a écrit :
Moi j'arrive pas non plus 
Le 20 novembre 2008 19:19, Marc Valleteau de Moulliac
<mvm@assfor.com <mailto:mvm@assfor.com>
<mailto:mvm@assfor.com>> a écrit :
Bonjour, je tente en vain d'installer une table toute
bête dans un
plugin que j'ai commencé à développer, et j'en suis
TOTALEMENT
INCAPABLE !! Voilà plusieurs mois que j'explore toutes les
publications (rares tout de même) dans la galaxie spip
sur le
sujet, sans aucune indication valable !! Pourtant, il
y en a qui y
arrivent, alors je dois être plus bête que la moyenne
- mais ça,
je le sais déjà !! 
Je suis sur un spip 192e, et j'ai un plugin qui a
besoin d'UNE
SEULE TABLE, avec trois champs ... Que j'essaie de
suivre des
exemples, ou que j'essaie de m'inspirer de plugins
existants, rien
n'y fait, au mieux, il ne se passe RIEN, au pire, ça
plante
carrément la partie privée (page blanche) !!
Les quelques explications que j'ai glanées sont - la
plus complète
pour spip 20 - écrites par ceux qui savent pour ceux
qui savent !!
Il y a des tas de trucs dans d'autres plugins, des
sous-répertoires en veux-tu en voilà, un fichier xml
que je
remplis au hasard, et après, me voilà, à l'issue de
plusieurs mois
de tentatives, comme au premier jour.
Je sais que je suis archi-nul, pourtant, des bdd, j'en
ai créées,
j'en ai écrites des requêtes etc. mais, rien à faire,
spip est
pour moi un MYSTERE à ce niveau.
J'ai fait :
- un répertoire base avec dedans deux fichiers :
- jeton_structure.php, où je décris - enfin, je crois
- ma table
selon les exemples trouvés dans spip :
$tables_principales, etc.
- jeton_creer.php où j'ai repris (sûrement de travers,
mais je ne
trouve aucun exemple qui fonctionne, même chez ceux
qui disent que
ça marchent) où j'utilise, comme on dit, le fameux
ceer_base()
- à la racine, un fichier plugin.xml avec les lignes
de base
(auteur, prefix ...) et où j'appelle (du moins je
crois) mon
fichier jeton_creer.php entre deux <install></install>
Mais tout ça pour rien ... Alors, y a-t-il UNE
personne assez
pédagogique pour me donner un coup de main ???
Je suis DESESPERE ...
----
Marc
_______________________________________________
spip-zone@rezo.net <mailto:spip-zone@rezo.net>
<mailto:spip-zone@rezo.net> -
http://listes.rezo.net/mailman/listinfo/spip-zone
-- Yohann, Admin de la Chambre des Secrets -
www.chambredesecrets.net
<http://www.chambredesecrets.net>
La Chambre des Secrets - Le meilleur de l'actualité
Harry Potter !
------------------------------------------------------------------------
_______________________________________________
spip-zone@rezo.net <mailto:spip-zone@rezo.net> -
http://listes.rezo.net/mailman/listinfo/spip-zone
-- @micalement stéphane --
ville de Bachant <http://bachant.free.fr>assobachant
asso.bachant@laposte.net <mailto:asso.bachant@laposte.net>
_______________________________________________
spip-zone@rezo.net <mailto:spip-zone@rezo.net> -
http://listes.rezo.net/mailman/listinfo/spip-zone
_______________________________________________
spip-zone@rezo.net <mailto:spip-zone@rezo.net> -
http://listes.rezo.net/mailman/listinfo/spip-zone
--
Yohann, Admin de la Chambre des Secrets - www.chambredesecrets.net <http://www.chambredesecrets.net>
La Chambre des Secrets - Le meilleur de l'actualité Harry Potter !
Bonjour,
Je vais essayer de vous donner un coup main de l'expérience que j'ai pour la création des tables. Tout d'abord pour installer des tables le plus simplement et proprement que possible il faut passer par le système d'install des plugin de SPIP.
Pour réaliser cela vous aller d'abord créer un fichier php (donnez en général le nom du plugin à ce fichier) qui contiendra la structures de vos tables que vous mettrez par exemple dans un répertoire /base (vous pouvez mettre ce fichier où vous voulez
).
Un petit exemple:
On a un fichier /base/db.php qui défini ma table "ma_table" qui contient trois champs :
/*CONTENU DE /base/db.php */
global $table_des_tables;
global $tables_principales;
// Déclaration de la table
$table_des_tables['ma_table'] = 'ma_table'; // Ne pas mettre le préfixe 'spip_', SPIP se chargera de la faire à la création de la table
// Définition de la structure le la table
$structure = array(
"id_ma_table" => "bigint(21) NOT NULL",
"champs1" => "VARCHAR(255) NOT NULL",
"champs2" => "TEXT NOT NULL"
);
// Définition de la clef primaire (s'il en a, on peut en défini plusieurs pour une table si nécessaire)
$primary_key = array("PRIMARY KEY" => "id_ma_table");
// Liaison de la clef primaire et de sa structure à la table
$tables_principales['spip_ma_table'] = array('field' => &$structure , 'key' => &$primary_key); // ici il faut le préfixe 'spip_'
Une fois ce fichier créé, on peut passer au fichier d'installation.
Bon pareil, il faut créer un fichier php (moi je préfère le mettre à la racine du plugin).
Exemple d'un fichier d'installation :
On a un fichier /install.php qui va installer la table 'spip_ma_table', permettra sa désinstallation:
/*CONTENU DE /install.php */
$GLOBALS['mon_plugin_version'] = 0.1; // Cette variable permet d'indiquez optionnellement la version du plugin installer, mais elle sert surtout pour savoir si le plugin est déjà installé, si c'est une version ancienne qui nécessite une mise à jour
// C'est ici qu'on va faire l'installation de nos tables
function mon_plugin_installation(){
// création des tables
include_spip('base/db');
include_spip('base/create');
include_spip('base/abstract_sql');
creer_base(); // C'est cette fonction qui va se charger de créer nos tables.
// On inscrit la version du plugin dans les métas
ecrire_meta('mon_plugin_version', $GLOBALS['mon_plugin_version']);
ecrire_metas();
// A partir d'ici vous pouvez toutes les opérations que vous souhaiter, ajouter les lignes au tables, des mise à jour, créer des fichier et j'en passe. On aussi bien pu créer nous tables ici à mano sans passer par la déclaration des tables, c'est à votre convenance.
}
//Désinstalle du plugin
function mon_plugin_unistall(){
include_spip('base/abstract_sql');
spip_query("DROP TABLE spip_ma_table");
// Efface les métas lié au plugin
effacer_meta('mon_plugin_version');
ecrire_metas();
}
// Les deux fonctions précédentes ne sont pas obligatoire, je l'ai créé juste pour que soit plus propre. Le plus important c'est la fonction suivante qui est appelé par spip lors de l'installation du plugin, le nom de cette fonction est composé du prefix du plugin et de 'install' et prend un paramètre indiquant l'action entreprise par SPIP
function prefix_de__mon_plugin_install($action){
switch ($action){
// Ici on vérifie si le plugin est installé (donc si son meta existe, rappelez-vous de plus haut de $GLOBALS['mon_plugin_version']), ou si c'est installé vérifie si c’est une version plus ancienne. Dans les 2 cas SPIP lance une installation, c'est à vous de voir s'il faut mettre à jour ou l'installer des choses.
case 'test':
return (isset($GLOBALS['meta']['mon_plugin_version']) AND ($GLOBALS['meta']['mon_plugin_version']>=$GLOBALS['mon_plugin_version']));
break;
// Lancement de l'installation
case 'install':
mon_plugin_installation();
break;
// Lancement de la désinstallation
case 'uninstall':
mon_plugin_unistall();
break;
}
}
Bon on a presque fini :). Il reste une dernière opération. Dans le fichier plugin.xml il faut indiquer notre fichier d'installation par cette ligne : <install>install.php</install> (si le fichier install se trouve dans un répertoire il faut l'indiquer par /nom_du_repertoire/nom_du_fichier_install.php).
Voilà une fois toutes ces opérations faites, Quand vous activez le plugin, un petit paquet devrait apparaitre indiquant que le plugin,s'est installé et à jour (C'est ce même paquet qu'il faut cliquez pour désinstallé un plugin, la désactivation d'un plugin ne le désinstalle pas). Après ,vérifier votre base de donné pour constatez que vos tables sont bien là.
En espérant avoir aidé.
Cordialement,
GUIOUBLY William.