From 91872f34141b34f8dd986ac9a5ba1a4a5a26d1ab Mon Sep 17 00:00:00 2001 From: "Committo,Ergo:sum" <esj@rezo.net> Date: Wed, 22 Aug 2007 12:54:27 +0000 Subject: [PATCH] =?UTF-8?q?#209:=20Ne=20pas=20produire=20de=20'''FIELD'''?= =?UTF-8?q?=20quand=20la=20liste=20de=20valeurs=20est=20vide,=20=C3=A7a=20?= =?UTF-8?q?acc=C3=A9l=C3=A8re=20un=20peu=20MYSQL=20et=20surtout=20=C3=A7a?= =?UTF-8?q?=20facilite=20le=20portage=20en=20PG.=20Quant=20=C3=A0=20[9862]?= =?UTF-8?q?,=20il=20en=20faisait=20trop:=20il=20faut=20retirer=20les=20apo?= =?UTF-8?q?strophes=20autour=20des=20''valeurs''=20des=20cl=C3=A9s=20de=20?= =?UTF-8?q?jointure=20num=C3=A9riques,=20mais=20il=20en=20fait=20autour=20?= =?UTF-8?q?de=20leurs=20''noms''=20(PHP=20les=20=20rajoutait,=20avec=20un?= =?UTF-8?q?=20warning=20invisible).=20Et=20encore=20un=20peu=20moins=20de?= =?UTF-8?q?=20warnings.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ecrire/public/balises.php | 10 ++++++---- ecrire/public/criteres.php | 7 +++---- 2 files changed, 9 insertions(+), 8 deletions(-) diff --git a/ecrire/public/balises.php b/ecrire/public/balises.php index cd37daaa3b..c2b44d5d4c 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 440f6fbc7e..65b7fdff85 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]; } -- GitLab