Skip to content
Extraits de code Groupes Projets
Valider 91872f34 rédigé par esj's avatar esj
Parcourir les fichiers

#209: Ne pas produire de '''FIELD''' quand la liste de valeurs est vide, ça...

#209: Ne pas produire de '''FIELD''' quand la liste de valeurs est vide, ça accélère un peu MYSQL et surtout ça facilite le portage en PG. Quant à [9862], il en faisait trop: il faut retirer les apostrophes autour des ''valeurs'' des clés de jointure numériques, mais il en fait autour de leurs ''noms'' (PHP les  rajoutait, avec un warning invisible). Et encore un peu moins de warnings.
parent 0423c4ea
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
......@@ -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)?
......
......@@ -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];
}
......
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Terminez d'abord l'édition de ce message.
Veuillez vous inscrire ou vous pour commenter