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]; }