diff --git a/ecrire/public/assembler.php b/ecrire/public/assembler.php
index 6b2d478ae9ba57b2ed0dbe2265a3ef4638cc8ba8..e7dfeaa3e9f83898d58bb203732c042e29f5b053 100644
--- a/ecrire/public/assembler.php
+++ b/ecrire/public/assembler.php
@@ -633,11 +633,15 @@ function inclure_modele($type, $id, $params, $lien, $connect='') {
 		'fond' => $fond, 
 		'dir_racine' => _DIR_RACINE # eviter de mixer un cache racine et un cache ecrire (meme si pour l'instant les modeles ne sont pas caches, le resultat etant different il faut que le contexte en tienne compte 
 	); 
-	// Fixer l'identifiant qu'on passe dans #ENV ;
-	// pour le modele <site1> on veut id_syndic => 1
-	// par souci de systematisme on ajoute aussi
-	// id => 1.
-	$contexte[id_table_objet($type)] = $contexte['id'] = $id;
+	// Le numerdo du modele est mis dans l'environnement 
+	// d'une part sous l'identifiant "id"
+	// et d'autre part sous l'identifiant de la cle primaire supposee
+	// par la fonction table_objet, 
+	// qui ne marche vraiment que pour les tables std de SPIP
+	// (<site1> =>> site =>> id_syndic =>> id_syndic=1)
+	$_id = 'id_' . table_objet($type);
+	if (preg_match('/s$/',$_id)) $_id = substr($_id,0,-1);
+	$contexte['id'] = $contexte[$_id] = $id;
 
 	if ($class)
 		$contexte['class'] = $class;
diff --git a/ecrire/public/composer.php b/ecrire/public/composer.php
index aef182fd36d180234810e6271039ea4d5a49e118..6359f162a1cb343d3dfe3c1c5831ef1c2d2c8ab5 100644
--- a/ecrire/public/composer.php
+++ b/ecrire/public/composer.php
@@ -472,7 +472,7 @@ function lang_parametres_forum($qs, $lang) {
 function calculer_select ($select = array(), $from = array(), 
 			$where = array(), $join=array(),
 			$groupby = '', $orderby = array(), $limit = '',
-			$having, $table = '', $id = '', $serveur='') {
+			$having=array(), $table = '', $id = '', $serveur='') {
 
 // retirer les criteres vides:
 // {X ?} avec X absent de l'URL