Concaténations
Concaténation dans un élément databasejoin
Il y a plusieurs manières et plusieurs endroits où faire des concaténations. Dans une liste déroulante affichant les enregistrements d'une autre table par exemple, pour être plus clair on souhaite concaténer plusieurs champs, avec du texte ou de la ponctuation.
Ici nous récupérons directement les champs, en les faisant précéder de leur table et de 3 underscores (ex : ma_table___champ1
) :
ma_table___champ1,'valeur texte', ma_table___champ2, 'ponctuation'
Concaténation dans un champ calc
Dans un champ calc il faudra ajouter un peu de PHP, pour afficher un champ par exemple :
return {ma_table___champ1} ;
Ou encore, pour ajouter du texte :
return '{ma_table___champ_prix} Euros' ;
Si vous n'affichez pas un champ, mais une variable, et souhaitez tout de même ajouter du texte, c'est plus classique :
return $nbrPelican.' pélican(s)' ;
Un autre exemple où on décode au passage les caractères HTML (html_entity_decode()
) pour les rendre lisibles, dans une concaténation :
$MaCivility = '{commande___civility_badge}'; $MonFirstName_badge = '{commande___firstname_badge}'; $MonLastNameBadge = '{name_badge}'; $MaCivility = html_entity_decode($MaCivility) ; $MonFirstName_badge = html_entity_decode($MonFirstName_badge) ; $MonLastNameBadge = html_entity_decode($MonLastNameBadge) ; return $MaCivility.' '.$MonFirstName_badge.' '.$MonLastNameBadge ;
On peut aller plus loin, en ajoutant de la ponctuation dynamique en Javascript (pour ne pas laisser une 2ème virgule après un champ éventuellement vide par exemple...). Je n'ai plus le code sous la main, mais j'y étais parvenu grâce au forum officiel.
Concaténation dans un plugin de formulaire
Pour une raison ou une autre, ça peut aussi servir... Ce sera alors sous forme SQL :
$myQuery->select("CONCAT(firstname, ' ', lastname) AS fullname") ;