Version 3 — Décembre 2006 — lns-bzn-49f-81-56-166-2
[Erreur...3][Erreur...4][Erreur...5]qui va ramener le nombre d’entrées de la table CATALOGUE du server « site-pas-mal-non-plus ».
[Erreur...7][Erreur...8][Erreur...9]Ce fichier sera lu à l’exécution de la première boucle référençant ce serveur, et ne sera plus lu par la suite ; on peut donc y placer l’ouverture de la connexion.
Si le site annexe est sous un Spip de même numéro de version, cela doit suffire car la description des tables dans le inc_serialbase
du serveur principal servira à interroger celles du serveur distant.
En revanche, si l’on veut en plus accéder à des tables spécifiques, il faut les ajouter à la globale $tables_principales
, par exemple comme je le disais tout à l’heure ainsi :
$spip_title = array(
"id" => "bigint(21) NOT NULL",
"title" => "text NOT NULL"
);
$spip_title_key = array(
"PRIMARY KEY" => "id"
);
$GLOBALS['tables_principales']['title']= array('field' => &$spip_title, 'key' => &$spip_title_key);
[Erreur...13]Ce qui ne marche pas encore :
— -
[Erreur...16]Bonne expérimentation à tous,
(Phil.Martin@inrialpes.fr)
- J’ai sur le même serveur MySQL une autre base appelée « basilic ».
[Erreur...21][Erreur...22][Erreur...23]- Créer le fichier /ecrire/inc_connect-basilic.php3 :
<?php
if (defined("_ECRIRE_INC_CONNECT_BASILIC")) return;
define("_ECRIRE_INC_CONNECT_BASILIC", "1");
@mysql_connect('mon_serveur','','mon_login','mon_mot_de_passe');
@mysql_select_db("basilic");
function spip_basilic_fetch($res, $serveur) {
return spip_fetch_array ($res, $serveur);
}
function spip_basilic_count($res, $serveur) {
return spip_num_rows ($res, $serveur);
}
[Erreur...28][Erreur...29]- Le fichier ##inc-compilo-api.php3## nécessite une modification (pour la version du 9 Mai 2005) :
[Erreur...31]{{{Déclarer une table d’une autre base MySQL SPIP 1.9}}}
Il y a un bug dans la version stable de la 1.9 il faut appliquer le correctif disponible ici : [->http://trac.rezo.net/trac/spip/changeset/6834]
[Erreur...34]
$mabase_matable = array (
"numero" => "INT(11) NOT NULL",
"prenom" => "CHAR(20)",
"nom" => "CHAR(20)"
);
$mabase_matable_key = array (
"PRIMARY KEY" => "numero"
);
$tables_des_serveurs_sql['mabase']['matable'] = array('field' => &$mabase_matable, 'key' => &$mabase_matable_key);
Créer inc_connect-mabase.php dans le dossier ecrire
<?php
if (defined("_ECRIRE_INC_CONNECT_mabase")) return;
define("_ECRIRE_INC_CONNECT_mabase", "1");
@mysql_connect('localhost','login','password');
@mysql_select_db("mabase");
function spip_mabase_fetch($res) {
return spip_fetch_array($res);
}
function spip_mabase_count($res) {
return spip_num_rows($res);
}
function spip_mabase_free($res) {
return spip_free_result($res);
}
function spip_mabase_select($select, $from, $where,
$groupby, $orderby, $limit,
$sousrequete, $having,
$table, $id, $serveur) {
return spip_mysql_select ($select, $from, $where,
$groupby, $orderby, $limit,
$sousrequete, $having,
$table, $id, $serveur);
}
?>
Example de boucles possibles après ça :
<BOUCLE_example(mabase:MATABLE){numero>50}
#NUMERO #PRENOM #NOM
</BOUCLE_example>
Depuis la SVN7259, la connexion à plusieurs serveurs est clarifiée. On contrôle exactement comment on lance la requête. Il faut ajouter au fameux fichier ecrire/inc_connect-mabase.php les fonctions base_mabase et spip_query_mabase comme suit :
<?php
if (defined("_ECRIRE_INC_CONNECT_MABASE")) return;
define("_ECRIRE_INC_CONNECT_MABASE", "1");
global $spip_mabase_link, $spip_mabase_db; // pour connexions multiples
[Erreur...46][Erreur...47]// http://doc.spip.org/@spip_query_db
function spip_query_mabase($query) {
$query = traite_query($query);
$start = ($GLOBALS['mysql_profile'] AND (($GLOBALS['connect_statut'] == '0minirezo') OR ($GLOBALS['auteur_session']['statut'] == '0minirezo'))) ? microtime() : 0;
return spip_mysql_trace($query,
$start,
mysql_query($query, $GLOBALS['spip_mabase_link']));
}
// http://doc.spip.org/@spip_abstract_select
function spip_mabase_select($select, $from, $where,
$groupby, $orderby, $limit,
$sousrequete, $having,
$table, $id, $serveur) {
[Erreur...53] return $res;
}
// http://doc.spip.org/@spip_abstract_fetch
function spip_mabase_fetch($res) {
return spip_fetch_array($res);
}
[Erreur...57]// http://doc.spip.org/@spip_abstract_free
function spip_mabase_free($res) {
return spip_free_result($res);
}
[Erreur...59]// http://doc.spip.org/@spip_abstract_showtable
function spip_mabase_showtable($res) {
return spip_mysql_showtable($res);
}
?>
[Erreur...62][Erreur...63]