sql_multi

La fonction sql_multi() applique une expression SQL sur une colonne contenant un polyglotte (<multi>) pour y extraire la partie correspondant à la langue indiquée. Elle retourne une chaine du type : expression AS multi. Cette opération sert essentiellement pour demander simultanément un tri sur cette colonne.

Elle accepte 4 paramètres :

  1. $sel est le nom de la colonne,
  2. $lang est le code de langue (’fr’, ’es’, ...),
  3. $serveur,
  4. $option

Elle s’utilise ainsi :

$multi = sql_multi('colonne', 'langue');
$select = sql_select($multi, 'table');

Notons que dans un squelette, le critère de boucle {par multi xx}xx est le nom de la colonne à trier appelle aussi cette fonction pour trier selon la langue en cours.

Exemple

SPIP utilise cette fonction pour trier des listes selon le titre d’un élément, dans la langue du visiteur :

$select = array(
	'id_mot', 'id_groupe', 'titre', 'descriptif', 
	sql_multi ("titre", $GLOBALS['spip_lang']));
if ($results = sql_select($select, 'spip_mots', "id_groupe=$id_groupe", '', 'multi')) {
	while ($r = sql_fetch($results)) {
		// $r['titre'] $r['multi']
	}
}

Le plugin « Grappes » également :

$grappes = sql_allfetsel("*, ".sql_multi ("titre", "$spip_lang"), "spip_grappes", "", "", "multi");
foreach ($grappes as $g) {
	// $g['multi']
}

Auteur Matthieu Marcillaud Publié le : Mis à jour : 12/03/23

Traductions : English, français