Vous pouvez restreindre pour certains utilisateurs l'entrée des valeurs sélectionnées par avance. Il y a plusieurs façons de le faire. Vous trouverez la diversité des méthodes et des exemples ci-dessous.

Restriction simple

Simple restriction pour limiter la saisie de l'utilisateur à des constantes spécifiées. Les exemples apparaissent ci-dessous.

Exemple 4-15. Limitation des entrants

$opts[’fdd’][’col_name’][’values’] = array(”,’No’,’Yes’); / / valeur par défaut est (rien)
$opts[’fdd’][’col_name’][’values’] = array(”,’Yes’,’No’); / / valeur par défaut est
(rien)
$opts[’fdd’][’col_name’][’values’] = array(’0’,’1’); / / valeur par défaut est 0
$opts[’fdd’][’col_name’][’values’] = array(’A’,’B’,’C’); / / Une valeur par défaut est A
$opts[’fdd’][’col_name’][’values’] = array(’No’,’Yes’); / / No par défaut
$opts[’fdd’][’col_name’][’values’] = array(’Yes’,’No’); / / valeur par défaut Yes
$opts[’fdd’][’col_name’][’values’] = range(1,99);

Table Liée

Les variables $opts[’fdd’][’col_name’][’values’][’table’] et $opts[’fdd’][’col_name’][’values’][’column’] limite l'utilisateur aux valeurs trouvées dans la colonne d'une autre table. Le champ facultatif [’values’][’description’] permet aux valeurs d'être différentes de celles du champ [’values’][’column’]. Cette option est utile pour donner plus de sens aux valeurs de la colonne.

Exemple 4-16. Restriction par table liée

$opts[’fdd’][’col_name’][’values’][’table’] = ’extractTable’;
$opts[’fdd’][’col_name’][’values’][’column’] = ’extractColumn’;
$opts[’fdd’][’col_name’][’values’][’description’] = ’extractDescription’; // facultatif

Colonne jointe

Il est également possible d'avoir plusieurs champs dans votre description. Par exemple, la description de concaténer deux etiquettes trouvée dans un autre tableau:

Exemple 4-17. Restriction avancée par table liée

$opts[’fdd’][’col_name’][’values’][’description’][’columns’][0] = ’desc_column_1’;
$opts[’fdd’][’col_name’][’values’][’description’][’columns’][1] = ’desc_column_2’;
$opts[’fdd’][’col_name’][’values’][’description’][’divs’][0] = ’ ’;

Le 'div' est ce qui va être utilisé comme un diviseur entre les colonnes dans l'affichage. Vous n'avez pas Nécessité de définir le dernier champ 'div', si elle n'est pas obligatoire. Ainsi, par exemple, si vous disposez d'une série de personnes dans une table, avec une colonne séparée pour les identifiants, le nom de famille et le prénom vous pouvez utiliser:

Exemple 4-18. Exemple complexe de table liée

$opts[’fdd’][’col_name’][’values’][’db’] = ’mydb’; / / facultatif
$opts[’fdd’][’col_name’][’values’][’table’] = ’mytable’;
$opts[’fdd’][’col_name’][’values’][’column’] = ’id’;
$opts[’fdd’][’col_name’][’values’][’description’][’columns’][0] = ’name_last’;
$opts[’fdd’][’col_name’][’values’][’description’][’divs’][0] = ’, ’;
$opts[’fdd’][’col_name’][’values’][’description’][’columns’][1] = ’name_first’;
$opts[’fdd’][’col_name’][’values’][’filters’] = ’id IN (1,2,3)’; / / facultatif clause WHERE
$opts[’fdd’][’col_name’][’values’][’orderby’] = ’last_name’; / / facultatif clause ORDER BY

Si la préfixation avec une certaine chaîne dans la colonne description est souhaitée, $opts[’fdd’][’col_name’][’values’][’description’][’divs’][-1] peut être utilisée. cela précèdera la colonne $opts[’fdd’][’col_name’][’values’][’description’][’columns’][0] colonne.

Notez que l'exemple ci-dessus contient des fonctions supplémentaires, telles que le filtrage en utilisant des valeurs [’filters’], et la possibilité de trier en utilisant les valeurs ['orderby'].

Autres valeurs

Les autres valeurs de la table de recherche pourraient être stockées dans un tableau [ 'values2']. La principale différence entre l'usage simple [ 'values'] est que des clés seront stockées dans la base de données et que de l'ensemble des valeurs sera Imprimé dans des clés d'entrées. Ceci est particulièrement utile pour les énumération MySQL quand vous ne désirez pas imprimer les clés d'énumération, mais plutôt préférer une utilisation plus facile des textes. Voir l'exemple:

Exemple 4-19. Restriction d'entre à l'utilisation des valeurs supplémentaires

$opts[’fdd’][’col_name’][’values2’] = array(
’displayed’ ⇒ ’Displayed Article’,
’hidden’ ⇒ ’Hidden Article’,
’disabled’ ⇒ ’Disabled Article’,
’deleted’ ⇒ ’Deleted Article’
);

Dans l'exemple ci-dessus, les mots clés ’displayed’, ’hidden’, ’disabled’ and ’deleted’ seront stockées dans la base de données, mais pour faciliter l'utilisation les expressions apparaîtront dans la boite de sélectionner de l'utilisateur. L'Usage de [ 'values2'] peut être combiné avec l'utilisation de [ 'values'].

Jointure avancée

Parfois, vous voulez limiter la sortie sur la table jointe. Cela est important dans les cas où [’values’][’column’] n'est pas unique en [’values’][’table’]. Pour ce faire, vous pouvez utiliser l'option $opts[’fdd’][’col_name’][’values’][’join’]. L'utilisation de [’values’][’filters’] ne mènera à rien, car il n'est pas appliqué à rejoindre le temps (join time), mais seulement lors du remplissage des valeurs dans la liste déroulante du menu.

Ces variables sont disponibles avec cette option.

$main_table – alias du tableau principal
$main_column – joindre à la colonne dans la table principale
$join_table – alias de la table de valeurs
$join_column – joindre à la colonne dans les valeurs de table
$join_description – description de la colonne dans le tableau des valeurs

PhpMyEdit créera par défaut la jointure $main_table.$main_column = $join_table.$join_column, ce qui est suffisant dans la plupart des cas. Cependant, vous pouvez l'étendre à des conditions supplémentaires ainsi.

Exemple 4-20. Table liée avec une jointure avancée

$opts[’fdd’][’col_name’][’values’][’join’]
= ’$main_table.$main_column = $join_table.$join_column AND’. ’$main_table.another_col = $join_table.another_col’

Veuillez noter que [’values’][’filters’] est utilisé pour filtrer les éléments déroulant pendant un mode Add / Edit (ndlr : ajout/edition) (avec une clause WHERE SQL), alors que [’values’][’join’] est utile d'avoir une bonne jointure à gauche à l'encontre de la table principale en mode list/Edit (ndlr : liste/voir).