Eclydre Web Manager > Développeur > Les fichiers DB > Définition de la liste

Définition de la liste

Introduction

Si l'objet DB est affiché sous forme de liste, il faut lui indiquer le format de la liste.
Par défaut, la liste est affichée sous forme ID / NOM, sans pagination

Liste sans pagination

Pour personnaliser la liste, il suffit d'indiquer la requête avec les colonnes souhaitées et un tableau de paramétrage des colonnes.

Exemple

'list_select'=>"SELECT a.id, concat(a.nom , ' ' , a.prenom) nom, a.email, a.type, l.nom as langue, a.societe FROM adm_user a LEFT OUTER JOIN lg_langue l ON l.id=a.lg_langue_id ".($find?" WHERE ".$find." ":"")." ORDER BY ".$tri,
    'list'=>array(
        array('libelle'=>'id',
                'taille'=>140,
                'field'=>'id',
                'url'=>$php_liste.'?table='.$table.'&action=delete&id=varID'.getParam('action,ssaction,id'),
                'acces'=>array('show'=>$recordDroits[$table]['droits']['delete']),
                'find'=>'a.id=#VAL#',
                'tri_up'=>'a.id',
                'tri_down'=>'a.id desc',
                ),
        array('libelle'=>'adm_user.nom',
                'field'=>'nom',
                'taille'=>250,
                'url'=> $php_fiche.'?table='.$table.'&id=varID'.getParam('action,ssaction,id'),
                'acces'=>array('show'=>$recordDroits[$table]['droits']['show']),
                'find'=>"lower(concat(a.nom ,' ', a.prenom)) LIKE lower('%#VAL#%')",
                'tri_up'=>'a.nom, a.prenom',
                'tri_down'=>'a.nom desc, a.prenom desc'
                ),
),

'list_select'=>

Indique la requête SQL à effectuer pour récupérer la liste.

Les variables disponibles sont :
- $table : le nom du DB en cours
- $find : le morceau de requête pour le filtrage par recherche
- $tri : le morceau de requête pour le ORDER BY

Exemple :
'list_select'=>"SELECT a.id, concat(a.nom , ' ' , a.prenom) nom, a.email, a.type, l.nom as langue, a.societe FROM adm_user a LEFT OUTER JOIN lg_langue l ON l.id=a.lg_langue_id ".($find?" WHERE ".$find." ":"")." ORDER BY ".$tri,

'list_tri'=>

Permet de définir le tri par défaut sur la liste, sinon c'est sur le champ "nom"

Exemple :
'list_tri'=>'zorder',

'list'=> array

Définit le tableau d'affichage des colonnes de la liste.
La première colonne contient toujours l'ID


syntaxe complète

array('libelle'=>'id',
    'taille'=>140,
    'field'=>'id',
    'crop'=>'20',
    'url'=>$php_liste.'?table='.$table.'&action=delete&id=varID'.getParam('action,ssaction,id'),
    'acces'=>array('show'=>$recordDroits[$table]['droits']['delete']),
    'find'=>'a.id=#VAL#',
    'array'=>array(0=>'icon_nok', 1=>'icon_ok'),
    'icon'=>'hidden',
    'tri_up'=>'a.id',
    'tri_down'=>'a.id desc',
    'replace'=>
    'wrap'=>
    'striphtml'=>'yes'
    'exclu_param'=>
    'traduction'=>
    'traduction_lg'=>
    'style'=>
),

Détails des options

 libelle  code du texte
 taille  largeur de colonne en px
 field  nom du champ/alias dans la requête
 crop  taille de césure du texte
 url  lien sur la cellule
varID = id de la colonne en cours
varCOL = contenu de la cellule en cours
varZORDER = n° de la ligne en cours
#FORM# = nom du < form> en cours
# [XX]# = colonne XX de la ligne en cours
 acces  définit le droit d'accès sur le lien URL
 find  filtre de recherche sous la forme de partie de requête SQL
#VAL# = la valeur saisie
 array  remplace la valeur de saisie par une autre via un tableau associatif
 icon  permet de définir une icone associé au lien à la place du crayon
= hidden, n'affiche pas d'icone
 tri_up  order by de tri croissant
tri_down
order by de tri décroissant
replace
sert à faire un str_replace sur la valeur de cellule, c'est un tableau à 2 postes :
1 - valeur à changer
2 - valeur de substitution
wrap
permet de wrapper le contenu de la cellule
getParam
champs à exclure du getParam sur les actions tri, etc...
strip_html
demande la suppression des tags html sur la colonne
exclu_param
champs à exclure du getParam du lien de la cellule en cours
traduction
champ contenant la traduction
traduction_lg
langue de traduction
style
style css à ajouter à la cellule
fonction
demande le traitement de la valeur à afficher par une fonction

Liste avec pagination

Une liste avec pagination fonctionne globalement comme une liste sans pagination.
La différence réside dans la requête SQL qui doit contenir un LIMIT.
Il faut aussi ajouter une entrée list_count pour définir la requête qui renvoie le nombre total d'élément dans la liste.

'list_select'=>"SELECT *, if(soustitre!='', concat(nom,' ',soustitre,''), nom) nomfull FROM c_bloc WHERE type_id='".getpost('type_id')."' AND type='".getpost('type')."' ".($find?" AND ".$find." ":"")." ORDER BY ".$tri." LIMIT ".(($page-1)*$pagination).", ".$pagination,
'list_count'=>"SELECT count(id) FROM c_bloc WHERE type_id='".cleansqlparam(getpost('type_id'))."' AND type='".cleansqlparam(getpost('type'))."' ".($find?" AND ".$find." ":""),

$page et $pagination sont les noms de variables par défaut :
$pagination = 30
$page = n° de page en cours, par défaut = 1

la requêtes list_count doit renvoyer le nombre d'enregistrement total de la liste, c'est la même que list_select qui renvoie seulement un count(XX) mais qui comporte le même WHERE mais aucun LIMIT.

Liste avec positionnement

Il s'agit de listes dont les éléments sont ordonnés (champs ZORDER de la table mysql).
Il faut dans ce cas ajouter à la liste les colonnes nécessaires à l'ordonnancement des lignes.

Exemple

array('libelle'=>'',
        'field'=>'zorder_up',
        'taille'=>20,
        'url'=> $php_liste.'?table='.$table.'&ssaction=up|'.$table.'|varID'.getParam('action,ssaction,id'),
        'acces'=>array('show'=>$recordDroits[$table]['table']['zorder']['write']),
        ),
array('libelle'=>'',
        'field'=>'zorder_down',
        'taille'=>20,
        'url'=> $php_liste.'?table='.$table.'&ssaction=down|'.$table.'|varID'.getParam('action,ssaction,id'),
        'acces'=>array('show'=>$recordDroits[$table]['table']['zorder']['write']),
        ),
array('libelle'=>'position',
        'field'=>'zorder',
        'taille'=>50,
        'style'=>'text-align: right;',
        'tri_up'=>'zorder',
        'tri_down'=>'zorder desc'
        ),