[SPIP Zone] Inserer des donnees dans une autre base depuis spip

Bonjour,

Je réalise un site (2.0.10) qui se sert dans l’interface publique des données
d’une autre base SPIP (installer sur le même serveur) grâce à un second fichier
de connexion dans config.

Tous fonctionne de ce coté, mais je souhaiterai accéder à ses données depuis
l’interface d’admin de SPIP et même pouvoir les modifier.

Le problème:
Dans la parti publique on utilise <BOUCLE(ma_deuxieme_base:spip_ma-table)> est
tous fonctionne.
Le soucis est que dans l’admin la récupération se fait avec
sql_select, donc j’ai essayé sql_select avec ma_deuxieme_base:spip_ma-table dans
le critère from pour tester et cela ne marche pas donc j’ai pas tenté de
sql_insertq ou update.
Comment faut-il faire pour arriver à insérer des éléments dans une autre base spip?

J’ai bien lu dans l’article ( http://www.spip.net/fr_article3681.html ) que les bases était qu’en lecture mais que la levée de cette restriction était à l’étude, qu’en ai-til aujourd’hui?
« Remarque : L’accès à des bases supplémentaires est exclusivement en lecture ; en particulier, si une base est par exemple un forum (administré par SPIP ou non) il reste impossible de poster dans ce forum autrement qu’à partir de son site d’origine. La levée de cette restriction est à l’étude. »

Le mieux est-il de codé cette page d’admin direct en php ou est-ce que on peut y
arriver grâce à l’API de SPIP , même en la modifiant ça me dérange pas ou en utilisant un paramètre de la
fonction sql_insertq de spip ou de spip_connect_db déjà existant qui m’aurait échappé ?

Utiliser le plugin ferme à spip (car on peut mettre plusieurs sites sur la même base, mais est-ce qu’il peuvent insérer des données dans le site du voisin)?

P.S: Est-il prévu d’utiliser la notion de squelettes(BOUCLE et surcharge,…)
dans l’interface d’amdin pour pouvoir la personnaliser?

Bonne journée.

nicolas villa a écrit :

Bonjour,

Je réalise un site (2.0.10) qui se sert dans l’interface publique des données
d’une autre base SPIP (installer sur le même serveur) grâce à un second fichier
de connexion dans config.

Tous fonctionne de ce coté, mais je souhaiterai accéder à ses données depuis
l’interface d’admin de SPIP et même pouvoir les modifier.

Le problème:
Dans la parti publique on utilise <BOUCLE(ma_deuxieme_base:spip_ma-table)> est
tous fonctionne.
Le soucis est que dans l’admin la récupération se fait avec
sql_select, donc j’ai essayé sql_select avec ma_deuxieme_base:spip_ma-table dans
le critère from pour tester et cela ne marche pas donc j’ai pas tenté de
sql_insertq ou update.
Comment faut-il faire pour arriver à insérer des éléments dans une autre base spip?

J’ai bien lu dans l’article ( http://www.spip.net/fr_article3681.html ) que les bases était qu’en lecture mais que la levée de cette restriction était à l’étude, qu’en ai-til aujourd’hui?
« Remarque : L’accès à des bases supplémentaires est exclusivement en lecture ; en particulier, si une base est par exemple un forum (administré par SPIP ou non) il reste impossible de poster dans ce forum autrement qu’à partir de son site d’origine. La levée de cette restriction est à l’étude. »

Le mieux est-il de codé cette page d’admin direct en php ou est-ce que on peut y
arriver grâce à l’API de SPIP , même en la modifiant ça me dérange pas ou en utilisant un paramètre de la
fonction sql_insertq de spip ou de spip_connect_db déjà existant qui m’aurait échappé ?

Utiliser le plugin ferme à spip (car on peut mettre plusieurs sites sur la même base, mais est-ce qu’il peuvent insérer des données dans le site du voisin)?

P.S: Est-il prévu d’utiliser la notion de squelettes(BOUCLE et surcharge,…)
dans l’interface d’amdin pour pouvoir la personnaliser?

Bonne journée.


---

_______________________________________________
 - 
  

bonjour,
j’ai vu ceci, si ça peu faire l’affaire ?
cordialement

Le 29 avr. 2010 à 06:32, nicolas villa a écrit :

Bonjour,

Je réalise un site (2.0.10) qui se sert dans l’interface publique des données
d’une autre base SPIP (installer sur le même serveur) grâce à un second fichier
de connexion dans config.

Tous fonctionne de ce coté, mais je souhaiterai accéder à ses données depuis
l’interface d’admin de SPIP et même pouvoir les modifier.

Le problème:
Dans la parti publique on utilise <BOUCLE(ma_deuxieme_base:spip_ma-table)> est
tous fonctionne.
Le soucis est que dans l’admin la récupération se fait avec
sql_select, donc j’ai essayé sql_select avec ma_deuxieme_base:spip_ma-table dans
le critère from pour tester et cela ne marche pas

http://trac.rezo.net/trac/spip/browser/branches/spip-2.0/ecrire/base/abstract_sql.php#L58
Il suffit de passer ‹ ma_deuxieme_base › dans l’argument $serveur

donc j’ai pas tenté de
sql_insertq ou update.
Comment faut-il faire pour arriver à insérer des éléments dans une autre base spip?

L’api sql_insertq/sql_updateq ne gère pas le cas distant car l’echappement (q) repose sur la description de la base et la fonction sous jacente n’est pas prévue non plus.
Plus généralement c’est complètement non testé, donc sans doute truffé de bug sur des cas que l’on a pas imaginé

J’ai bien lu dans l’article ( http://www.spip.net/fr_article3681.html ) que les bases était qu’en lecture mais que la levée de cette restriction était à l’étude, qu’en ai-til aujourd’hui?

« Remarque : L’accès à des bases supplémentaires est exclusivement en lecture ; en particulier, si une base est par exemple un forum (administré par SPIP ou non) il reste impossible de poster dans ce forum autrement qu’à partir de son site d’origine. La levée de cette restriction est à l’étude. »

Il faut que quelqu’un s’en occupe, mais pour le moment personne n’en a eu suffisamment besoin pour le faire.

Le mieux est-il de codé cette page d’admin direct en php ou est-ce que on peut y
arriver grâce à l’API de SPIP , même en la modifiant ça me dérange pas ou en utilisant un paramètre de la
fonction sql_insertq de spip ou de spip_connect_db déjà existant qui m’aurait échappé ?

le paramètre $serveur est prévu sur toutes les fonctions de l’API, mais n’est pas géré complètement/correctement dans les fonctions sous-jacentes.
Cela dit, si tu as un cas d’usage, tu peux patcher le code dans le req/sql que tu utilises et quand tu auras quelque chose de stable et éprouvé proposer ton patch dans un ticket sur TRAC, ce sera un bon début.

Utiliser le plugin ferme à spip (car on peut mettre plusieurs sites sur la même base, mais est-ce qu’il peuvent insérer des données dans le site du voisin)?

P.S: Est-il prévu d’utiliser la notion de squelettes(BOUCLE et surcharge,…)
dans l’interface d’amdin pour pouvoir la personnaliser?

Il y a déjà plein de petits morceaux en squelette dans l’espace privé, et la surcharge est déjà possible, mais tout n’a pas été réécrit encore car c’est un très gros chantier.

Cédric

Merci à vous deux pour ces réponses, je vais donc regarder le paramètre $server (je pensais que c’était pour taper sur un serveur sql distant…) de plus près et sql_selectdb aussi, mais il va me falloir comprendre tous le mécanisme sous-jacent avant de trouver quelques choses, mais si je trouve et réussi, je reviendrai vers vous.

Ok pour la partie privé, vivement Zprivé :wink:

Bonne journée.

Le 29 avril 2010 09:20, cedric.morin@yterium.com <cedric.morin@yterium.com> a écrit :

Le 29 avr. 2010 à 06:32, nicolas villa a écrit :

Bonjour,

Je réalise un site (2.0.10) qui se sert dans l’interface publique des données
d’une autre base SPIP (installer sur le même serveur) grâce à un second fichier
de connexion dans config.

Tous fonctionne de ce coté, mais je souhaiterai accéder à ses données depuis
l’interface d’admin de SPIP et même pouvoir les modifier.

Le problème:
Dans la parti publique on utilise <BOUCLE(ma_deuxieme_base:spip_ma-table)> est
tous fonctionne.
Le soucis est que dans l’admin la récupération se fait avec
sql_select, donc j’ai essayé sql_select avec ma_deuxieme_base:spip_ma-table dans
le critère from pour tester et cela ne marche pas

http://trac.rezo.net/trac/spip/browser/branches/spip-2.0/ecrire/base/abstract_sql.php#L58
Il suffit de passer ‹ ma_deuxieme_base › dans l’argument $serveur

donc j’ai pas tenté de
sql_insertq ou update.
Comment faut-il faire pour arriver à insérer des éléments dans une autre base spip?

L’api sql_insertq/sql_updateq ne gère pas le cas distant car l’echappement (q) repose sur la description de la base et la fonction sous jacente n’est pas prévue non plus.
Plus généralement c’est complètement non testé, donc sans doute truffé de bug sur des cas que l’on a pas imaginé

J’ai bien lu dans l’article ( http://www.spip.net/fr_article3681.html ) que les bases était qu’en lecture mais que la levée de cette restriction était à l’étude, qu’en ai-til aujourd’hui?

« Remarque : L’accès à des bases supplémentaires est exclusivement en lecture ; en particulier, si une base est par exemple un forum (administré par SPIP ou non) il reste impossible de poster dans ce forum autrement qu’à partir de son site d’origine. La levée de cette restriction est à l’étude. »

Il faut que quelqu’un s’en occupe, mais pour le moment personne n’en a eu suffisamment besoin pour le faire.

Le mieux est-il de codé cette page d’admin direct en php ou est-ce que on peut y
arriver grâce à l’API de SPIP , même en la modifiant ça me dérange pas ou en utilisant un paramètre de la
fonction sql_insertq de spip ou de spip_connect_db déjà existant qui m’aurait échappé ?

le paramètre $serveur est prévu sur toutes les fonctions de l’API, mais n’est pas géré complètement/correctement dans les fonctions sous-jacentes.
Cela dit, si tu as un cas d’usage, tu peux patcher le code dans le req/sql que tu utilises et quand tu auras quelque chose de stable et éprouvé proposer ton patch dans un ticket sur TRAC, ce sera un bon début.

Utiliser le plugin ferme à spip (car on peut mettre plusieurs sites sur la même base, mais est-ce qu’il peuvent insérer des données dans le site du voisin)?

P.S: Est-il prévu d’utiliser la notion de squelettes(BOUCLE et surcharge,…)
dans l’interface d’amdin pour pouvoir la personnaliser?

Il y a déjà plein de petits morceaux en squelette dans l’espace privé, et la surcharge est déjà possible, mais tout n’a pas été réécrit encore car c’est un très gros chantier.

Cédric

S'lt

L'api sql_insertq/sql_updateq ne gère pas le cas distant car l'echappement (q) repose sur la description de la base et la fonction sous
jacente n'est pas prévue non plus.
Plus généralement c'est complètement non testé, donc sans doute truffé de bug sur des cas que l'on a pas imaginé

Sur une 2.1 sql_insertq fonctionne, pour autant le résultat associé
peut ne pas être celui attendu.

Km

Le 29 avr. 2010 à 12:41, cam.lafit@azerttyu.net a écrit :

S'lt

L'api sql_insertq/sql_updateq ne gère pas le cas distant car l'echappement (q) repose sur la description de la base et la fonction sous
jacente n'est pas prévue non plus.
Plus généralement c'est complètement non testé, donc sans doute truffé de bug sur des cas que l'on a pas imaginé

Sur une 2.1 sql_insertq fonctionne, pour autant le résultat associé
peut ne pas être celui attendu.

Ce n'est pas ce que j'appelle fonctionner, alors.

Cédric

En 2.1, j’ai bien le sql_select (variable $server est un peu piégeuses car elle change de place dans les arguments des fonctions, en 7 eme position pour select) sql_updateq( en 5 eme ) et sql_insertq (en 4 eme position) qui fonctionnent ( je l’ai pas maltraité encore) , j’arrive à remplir la seconde base distante du plugin spipimmo ( table spip_annonces) en modification et en création d’annonce, parfait… :slight_smile:

Le 29 avril 2010 14:27, cedric.morin@yterium.com <cedric.morin@yterium.com> a écrit :

Le 29 avr. 2010 à 12:41, cam.lafit@azerttyu.net a écrit :

S’lt

L’api sql_insertq/sql_updateq ne gère pas le cas distant car l’echappement (q) repose sur la description de la base et la fonction sous
jacente n’est pas prévue non plus.
Plus généralement c’est complètement non testé, donc sans doute truffé de bug sur des cas que l’on a pas imaginé

Sur une 2.1 sql_insertq fonctionne, pour autant le résultat associé
peut ne pas être celui attendu.

Ce n’est pas ce que j’appelle fonctionner, alors.

Cédric

S'lt

En 2.1, j'ai bien le sql_select (variable $server est un peu piégeuses car
elle change de place dans les arguments des fonctions,

Cela depend comment tu comptes :slight_smile:
C'est toujours l'avant dernière position en tant qu'argument.

Comme je le disait j'utilise sans pb l'api sur une base spip distante.
Toutefois il nous manque encore un jeu de test complet pour être sur
que tout se passe comme il se doit.

Cedric peux tu rappeler les points qui semblent douteux, ainsi on peut
vérifier sur nos cas d'utilisations

Km

Le 7 mai 2010 à 11:39, cam.lafit@azerttyu.net a écrit :

S'lt

En 2.1, j'ai bien le sql_select (variable $server est un peu piégeuses car
elle change de place dans les arguments des fonctions,

Cela depend comment tu comptes :slight_smile:
C'est toujours l'avant dernière position en tant qu'argument.

Comme je le disait j'utilise sans pb l'api sur une base spip distante.

tu utilises alors que les cas "qui marchent", car par construction il y a des cas qui ne marchent pas.
les sql_updateq et sql_insertq reposent sur une description de la base pour echapper les champs, qui ne prend pas en compte le $serveur
Il y a plusieurs autres fonctions internes utilisées par l'ecriture qui ignorent le $serveur.
Donc ça bug forcément.

Cédric