diff --git a/ecrire/public/balises.php b/ecrire/public/balises.php
index cd37daaa3b2f3290d7784f0278b5e137f96a4324..c2b44d5d4c5c596b44b4608b3f71f4a9bc9b5612 100644
--- a/ecrire/public/balises.php
+++ b/ecrire/public/balises.php
@@ -1249,10 +1249,12 @@ function balise_MODELE_dist($p) {
 	// le cas spip_syndic_articles)
 	#$code_contexte[] = "'$nom='.".champ_sql($nom, $p);
 
-	// Reserver la cle primaire de la boucle courante
-	if ($primary = $p->boucles[$p->id_boucle]->primary) {
-		$id = champ_sql($primary, $p);
-		$code_contexte[] = "'$primary='.".$id;
+	// Reserver la cle primaire de la boucle courante si elle existe
+	if ($idb = $p->id_boucle) {
+		if ($primary = $p->boucles[$idb]->primary) {
+			$id = champ_sql($primary, $p);
+			$code_contexte[] = "'$primary='.".$id;
+		}
 	}
 
 	$p->code = "( ((\$recurs=(isset(\$Pile[0]['recurs'])?\$Pile[0]['recurs']:0))<5)?
diff --git a/ecrire/public/criteres.php b/ecrire/public/criteres.php
index 440f6fbc7e8b9bfe0db95d4b039a3aa621a8b036..65b7fdff8566f5bd0f7e5d952697dad3f43ed26f 100644
--- a/ecrire/public/criteres.php
+++ b/ecrire/public/criteres.php
@@ -682,7 +682,8 @@ function critere_IN_dist ($idb, &$boucles, $crit)
 			$op = '<>';
 	} else $op = '=';
 
-	$arg = "'FIELD($arg,' . _q($var) . ')'";
+
+	$arg = "((_q($var)===\"''\") ? 0 : ('FIELD($arg,' . _q($var) . ')'))";
 	$boucles[$idb]->select[]=  "\" . $arg . \" AS cpt$cpt";
 	$op = array("'$op'", $arg, 0);
 
@@ -788,7 +789,6 @@ function calculer_critere_infixe($idb, &$boucles, $crit) {
 		if (strpos($val[0], '_q(') === 0
 		AND test_sql_int($desc['field'][$col]))
 				$val[0] = 'intval' . substr($val[0],2);
-		spip_log("typer $nom $col $idb $d $val[0]");
 	}
 	// tag du critere pour permettre aux boucles de modifier leurs requetes par defaut en fonction de ca
 	$boucles[$idb]->modificateur['criteres'][$col] = true;
@@ -899,9 +899,8 @@ function calculer_jointure(&$boucle, $depart, $arrivee, $col='', $cond=false)
   foreach($res as $r) {
     list($d, $a, $j) = $r;
     if (!$id_table) $id_table = $d;
-    $type = $a[1]['field'][$j];
     $n = ++$cpt;
-    $boucle->join[$n]= array("'$id_table'", test_sql_int($type) ? $j : "'$j'");
+    $boucle->join[$n]= array("'$id_table'","'$j'");
     $boucle->from[$id_table = "L$n"] = $a[0];    
   }