diff --git a/ecrire/public/compiler.php b/ecrire/public/compiler.php index dda410292b2cfa72a1ca062ba701314d1f1bf4b6..c34e438b51ca97e2679b2c81e530a252b332ddd9 100644 --- a/ecrire/public/compiler.php +++ b/ecrire/public/compiler.php @@ -360,12 +360,12 @@ function calculer_from(&$boucle) function calculer_order(&$boucle) { $order = $boucle->order; - if (isset($boucle->modificateur['collate'])){ - $col = $boucle->modificateur['collate']; - $col = ".($col ?' COLLATE '.$col:'')"; + /*if (isset($boucle->modificateur['collate'])){ + $col = "." . $boucle->modificateur['collate']; foreach($order as $k=>$o) - $order[$k] .= $col; - } + if (strpos($order[$k],'COLLATE')===false) + $order[$k].= $col; + }*/ return join(', ', $order); } diff --git a/ecrire/public/criteres.php b/ecrire/public/criteres.php index 9af626e199337e8e181da23eae6f782cbb2fb9aa..2c52b26a291bd192a6b9129952dad5c363865e50 100644 --- a/ecrire/public/criteres.php +++ b/ecrire/public/criteres.php @@ -282,8 +282,11 @@ function critere_collecte_dist($idb,&$boucles, $crit) { if (isset($crit->param[0])) { $_coll = calculer_liste($crit->param[0], array(), $boucles, $boucles[$idb]->id_parent); $boucle = $boucles[$idb]; - $boucle->modificateur['collate'] = $_coll; - } else + $boucle->modificateur['collate'] = "($_coll ?' COLLATE '.$_coll:'')"; + $n = count($boucle->order); + if ($n && (strpos($boucle->order[$n-1],'COLLATE')===false)) + $boucle->order[$n-1] .= " . " . $boucle->modificateur['collate']; + } else erreur_squelette(_T('zbug_info_erreur_squelette'), "{collecte ?} BOUCLE$idb"); } @@ -323,6 +326,7 @@ function critere_parinverse($idb, &$boucles, $crit, $sens) { global $table_des_tables, $tables_des_serveurs_sql, $exceptions_des_jointures; $boucle = &$boucles[$idb]; if ($crit->not) $sens = $sens ? "" : " . ' DESC'"; + $collecte = (isset($boucle->modificateur['collecte']))?" . ".$boucle->modificateur['collecte']:""; foreach ($crit->param as $tri) { @@ -402,8 +406,9 @@ function critere_parinverse($idb, &$boucles, $crit, $sens) { } } if ($order) - $boucle->order[] = ($fct ? "'$fct(' . $order . ')'" : $order) . - (($order[0]=="'") ? $sens : ""); + $boucle->order[] = ($fct ? "'$fct(' . $order . ')'" : $order) + . $collecte + . (($order[0]=="'") ? $sens : ""); } }