Input : select

input => select

Crée une liste déroulante < SELECT name=""...

SELECT depuis une table mysql

    'lg_langue_id'=> array(
                'type'=>'long',
                'label'=>'c_bloc.langue',
                'input'=>'select',
                'valeurs'=>'SELECT id, nom FROM lg_langue ORDER BY nom',
                'size'=>'1',
                'select_id'=>'id',
                'select_val'=>'nom',
                'select_first'=>'< option value="0">'. getLT('lg_langue.francais').'< /option> < option value="-1" >'. getLT('lg_langue.hide_if_defined').'< /option>',
                'defaut'=>'php:GetSQL("SELECT lg_langue_id FROM c_page WHERE id='6011'", 0)',
                'write'=>'all',
                'show'=>'all'
            ),
 valeurs  requêtes sql pour créer la liste
 select_id  ID dans la liste, sera mis dans option value=
select_val
Libellé dans la liste, sera mis dans le libellé des options
select_first
bloc d'HTML ajouté avant les options dynamiques
size
=1, taille d'affichage du select

Cas particulier des listes très longues

Pour une liste déroulante très longue, on n'affichera pas la liste complète mais uniquement l'item sélectionné et on ajoutera une icône de recherche
        'm_media_id'=> array(
                'type'=>'long',
                'label'=>'c_bloc.media',
                'input'=>'select',
                'showtest'=>array('is_defined'=>array('id'), ),
                'valeurs'=>"SELECT id, concat(nom,' (',type,')') media FROM m_media WHERE id='0'",
                'select_id'=>'id',
                'select_val'=>'media',
                'select_first'=>'< option value="0">< /option>',
                'select_find'=>array('table'=>'m_media m LEFT JOIN m_theme t ON m.m_theme_id=t.id ', 'id'=>'m.id', 'nom'=>'m.nom', 'liste'=>"convert(m.id USING utf8), m.nom, m.type, if(t.id§t.nom§'')", 'where'=>""),
                'defaut'=>'0',
                'size'=>'1',
                'write'=>'all',
                'show'=>'all',
            ),

Activer la recherche dans la liste

Sur les listes très longues, il peut être utile d'activer le popup de recherche, celui cherche sur les éléments affichésdans la liste, si vous affichez id, nom, parent, la recherche sera sur le texte id+nom+parent.

Pour activer la recherche, ajouter le tableau de définition "select_find" :
  • table : la ou les tables en cas de jointure
  • id : l'id de l'élément dans le SELECT
  • nom : le libellé de l'élément dans le SELECT
  • liste : les items du SELECT (SELECT items FROM)
  • where : les conditions de la requête, ou éléments de jointure, etc.
'select_find'=>array('table'=>'m_media m LEFT JOIN m_theme t ON m.m_theme_id=t.id ', 'id'=>'m.id', 'nom'=>'m.nom', 'liste'=>"convert(m.id USING utf8), m.nom, m.type, if(t.id§t.nom§'')", 'where'=>""),

Ajout / édition de fiche de SELECT dynamique

Il est possible d'ajouter directement des fiches dans le SELECT ou d'éditer des fiches du SELECT.

Pour cela, indiquer le DB pour l'ajout et le DB pour l'édition.
                'add'=>'m_media',
                'edit'=>'m_media',

SELECT en dur

        'target'=> array(
                'type'=>'text',
                'label'=>'target',
                'showtest'=>array(),
                'input'=>'select',
                'valeurs'=>array('_self'=>'_self', '_blank'=>'_blank', '_top'=>'_top', 'popup'=>'popup'),
                'maxlen'=>'7',
                'size'=>'1',
                'defaut'=>'_self',
                'write'=>'all',
                'show'=>'all'
            ),
 valeurs  valeurs ne contient plus une requête mais un tableau de couples valeur/libellé

SELECT depuis un tableau php existant

Il est possible de remplir le SELECT à partir d'un tableau php existant ou un appel de fonction php.
Pour cela indiquer que le tableau provient de php :

'valeurs'=> 'php:$tableau';
'valeurs'=> 'php:mafonction()';

SELECT depuis une liste d'élements continus

Pour créer une liste d'items allant de 1 à 10 ou de 20 à 10, indiquer l'élément de départ et celui d'arrivée.
Pour cela, indiquer un tableau à 2 éléments, celui de départ et celui d'arrivée, puis indiquer qu'il s'agit d'une liste d'éléments continus.
                'valeurs'=>array( array('id'=>date('Y'), 'nom'=>date('Y')), array('id'=>1980, 'nom'=>'1980'),),
                'select_first'=>'',
                'valeurs_range'=>'yes',
                'select_id'=>'id',
                'select_val'=>'nom',

 valeurs  tableau à 2 éléments respectant le format select_id/ select_val
 select_id  clé du tableau de valeurs contenant l'ID
select_val
clé du tableau de valeurs contenant le libellé
valeurs_range
=yes, indique qu'on veut afficher une liste calculée à partir d'un item de départ et d'un item de fin

SELECT depuis un tableau à 1 seule dimension

Le tableau valeurs de population du SELECT peut être à une seule dimension, dans ce cas, on indique
'select_key_val'=>'yes',
pour indiquer que l'ID et le libellé proviennent de la même clé de tableau sans tenir compte de SELECT_ID et SELECT_VAL.
Valeurs doit donc contenir un tableau à une seule dimension.

Cas spécifique COLORPICKER

Pour créer un SELECT servant à sélectionner une couleur dans une liste de code #RGB, indiquer

'special'=>'colorpicker',