[spip-dev] Faire dialoguer deux spips : deux méthodes, un problème (charset ?)

Bonjour,

J'essaye d'écrire un tutoriel pour expliquer l'échange de données entre Spip(s).

Dans Spip, il existe deux méthodes pour déclarer d’autres bases :
  • la déclaration par la configuration interne
  • la déclaration dans le dossier /config

Sites en utf-8, sur le même serveur (essais sur lautre, sur herbes_folles et en local sur MAMP et WAMP)

pour la même boucle, j'ai avec le seconde méthode :

(24 septembre 2011) - Formation à l’apiculture : préparation à l’hivernage
(23 juillet 2011) - récolte du miel
(9 juillet 2011) - Formation à l’apiculture : séance n° 14
(3 juillet 2011) - Portes ouvertes au rucher école

et, avec la première :

(24 septembre 2011) - Formation � l’apiculture : pr�paration � l’hivernage
(23 juillet 2011) - r�colte du miel
(9 juillet 2011) - Formation � l’apiculture : s�ance n� 14
(3 juillet 2011) - Portes ouvertes au rucher �cole

J'ai testé avec d'autres sites, idem.

Claude

Je ne comprends pas ce que tu veux dire: dans les deux cas on doit se retrouver avec un fichier ${base}.php dans /config.

Committo,Ergo:Sum

Dans Spip, il existe deux méthodes pour déclarer d’autres bases :
  • la déclaration par la configuration interne
  • la déclaration dans le dossier /config

Je ne comprends pas ce que tu veux dire: dans les deux cas on doit se retrouver avec un fichier ${base}.php dans /config.

Committo,Ergo:Sum

zut, j'avais fait une réponse hors liste :

bonjour,

Bonjour,

Il y a un serveur de base de donnée en utf-8 et l'autre en latin1 ou autre
qui n'affiche pas correctement les caractères. Çà doit être à cause de çà ?
non ? Quelles sont les MySQL des base de données ?

*hypothèse*
MySQL ( "CHARSET=latin1" en ---> "CHARSET=utf8" )

Spip 2.1.1

sur le Mamp avec la déclaration par /ecrire/?exec=admin_declarer
MySQL serveur 5.0.41, client 5.0.41
jeu de caractères UTF-8
Interclassement utf8_unicode_ci
j'ai une collection de : �

Spip crée alors dans /config le fichier autresite.php

<?php
if (!defined("_ECRIRE_INC_VERSION")) return;
spip_connect_db('localhost','','root','root','autresite','mysql', '');
?>

sur le même :
si je passe en déposant un autresite.php avec le contenu du connect.php de autresite

<?php
if (!defined("_ECRIRE_INC_VERSION")) return;
define('_MYSQL_SET_SQL_MODE',true);
$GLOBALS['spip_connect_version'] = 0.7;
spip_connect_db('localhost','','root','root','autresite','mysql', 'spip','');
?>

ou si je colle ce contenu à la place du contenu précédent, alors plus de problème de caractères

Claude

avec la déclaration par /ecrire/?exec=admin_declarer

..

Spip crée alors dans /config le fichier autresite.php

<?php
if (!defined("_ECRIRE_INC_VERSION")) return;
spip_connect_db('localhost','','root','root','autresite','mysql', '');
?>

sur le même :
si je passe en déposant un autresite.php avec le contenu du connect.php de autresite

<?php
if (!defined("_ECRIRE_INC_VERSION")) return;
define('_MYSQL_SET_SQL_MODE',true);

Ok c'est clair où est la différence: il n'y a pas d'analyse du serveur SQL utilisé dans le cas d'une déclaration externe, je vais arranger ça.

Committo,Ergo:Sum

Essaye
http://trac.rezo.net/trac/spip/changeset/15987

Committo,Ergo:Sum

j'ai maintenant

<?php
if (!defined("_ECRIRE_INC_VERSION")) return;
$GLOBALS['mysql_rappel_nom_base'] = false; /* echec de test_rappel_nom_base_mysql a l'installation. */
define('_MYSQL_SET_SQL_MODE',true);
spip_connect_db('localhost','','root','root','autresite','mysql', '');
?>

mais toujours les erreurs de caractères qui disparaissent si je rajoute la ligne :

$GLOBALS['spip_connect_version'] = 0.7;

Claude

On ne sait pas a priori si cette base externe est pilotée par SPIP, donc cette absence est normale.
Mais du coup on tombe sur le code introduit ici:
http://trac.rezo.net/trac/spip/changeset/10968
Je passe la main à Cédric.

Committo,Ergo:Sum

toujours les erreurs de caractères qui disparaissent si je rajoute la ligne :

$GLOBALS['spip_connect_version'] = 0.7;

On ne sait pas a priori si cette base externe est pilotée par SPIP, donc cette absence est normale.

ok, merci