diff --git a/ecrire/public/compiler.php b/ecrire/public/compiler.php
index cc0a1b49c77f67521c733a8734e34d5535da4bba..13eaca69a298de65737d45c847d73964f9e1257b 100644
--- a/ecrire/public/compiler.php
+++ b/ecrire/public/compiler.php
@@ -672,9 +672,8 @@ function code_boucle(&$boucles, $id, $nom)
 // En cas d'erreur, elle retourne un tableau des 2 premiers elements seulement
 
 // http://doc.spip.org/@public_compiler_dist
-function public_compiler_dist($squelette, $nom, $gram, $sourcefile) {
-  global  $table_des_tables, $tables_des_serveurs_sql, $tables_principales, $tables_auxiliaires,
-    $tables_jointures;
+function public_compiler_dist($squelette, $nom, $gram, $sourcefile, $connect=''){
+	global  $table_des_tables, $tables_des_serveurs_sql, $tables_principales, $tables_auxiliaires, $tables_jointures;
 
 	// Pre-traitement : reperer le charset du squelette, et le convertir
 	// Bonus : supprime le BOM
@@ -703,6 +702,8 @@ function public_compiler_dist($squelette, $nom, $gram, $sourcefile) {
 	foreach($boucles as $id => $boucle) {
 		$type = $boucle->type_requete;
 		if ($type != 'boucle') {
+			if (!$boucles[$id]->sql_serveur AND $connect)
+				$boucles[$id]->sql_serveur = $connect;
 			$show = trouver_table($type, $boucles[$id]);
 			if ($show) {
 				$nom_table = $show['table'];
@@ -805,7 +806,8 @@ function public_compiler_dist($squelette, $nom, $gram, $sourcefile) {
 	  $code . '
 
 //
-// Fonction principale du squelette ' . $sourcefile ."
+// Fonction principale du squelette ' . $sourcefile . 
+	  ($connect ? " pour $connect" : '') . ".
 //
 function " . $nom . '($Cache, $Pile, $doublons=array(), $Numrows=array(), $SP=0) {
 	$page = ' .
diff --git a/ecrire/public/composer.php b/ecrire/public/composer.php
index 2a0395e551a15d96117676d5cf0f544ef87d835b..b2af6c6b7bf55eeb50557069d4ce69fed7810a90 100644
--- a/ecrire/public/composer.php
+++ b/ecrire/public/composer.php
@@ -29,9 +29,10 @@ include_spip('public/debug'); # toujours prevoir le pire
 # Toutefois pour 2. et 3. preferer la technique de la surcharge
 
 // http://doc.spip.org/@public_composer_dist
-function public_composer_dist($squelette, $mime_type, $gram, $sourcefile) {
+function public_composer_dist($squelette, $mime_type, $gram, $source) {
 
-	$nom = $mime_type . '_' . md5($squelette);
+	$connect = _request('connect');
+	$nom = $mime_type . ($connect ?  "_$connect" : '') . '_' . md5($squelette);
 
 	// si squelette est deja en memoire (INCLURE  a repetition)
 	if (function_exists($nom))
@@ -40,7 +41,7 @@ function public_composer_dist($squelette, $mime_type, $gram, $sourcefile) {
 	$phpfile = sous_repertoire(_DIR_SKELS,'',false,true) . $nom . '.php';
 
 	// si squelette est deja compile et perenne, le charger
-	if (!squelette_obsolete($phpfile, $sourcefile)
+	if (!squelette_obsolete($phpfile, $source)
 	AND lire_fichier ($phpfile, $contenu,
 	array('critique' => 'oui', 'phpcheck' => 'oui'))) 
 		eval('?'.'>'.$contenu);
@@ -55,9 +56,9 @@ function public_composer_dist($squelette, $mime_type, $gram, $sourcefile) {
 	if (function_exists($nom)) return $nom;
 
 	// charger le source, si possible, et compiler 
-	if (lire_fichier ($sourcefile, $skel)) {
+	if (lire_fichier ($source, $skel)) {
 		$compiler = charger_fonction('compiler', 'public');
-		$skel_code = $compiler($skel, $nom, $gram, $sourcefile);
+		$skel_code = $compiler($skel, $nom, $gram, $source, $connect);
 	}
 
 	// Tester si le compilateur renvoie une erreur
@@ -72,7 +73,7 @@ function public_composer_dist($squelette, $mime_type, $gram, $sourcefile) {
 			ecrire_fichier ($phpfile, $skel_code);
 			return $nom;
 		} else {
-			erreur_squelette(_T('zbug_erreur_compilation'), $sourcefile);
+			erreur_squelette(_T('zbug_erreur_compilation'), $source);
 		}
 	}
 }