YACS Le livre de Yacs Gestion de contenu

PrécédentSuivantIndex

Exemple d'utilisation du code "table"

Les tables sont des modules d'interprétation de commande SQL

Macmana veut afficher dans un article une centralisation d'actions assignées à des utilisateurs, elle la veut utilisateur par utilisateur.

SELECT distinct brassens_actions.title as "Tâches", brassens_users.nick_name as "Nom", brassens_actions.create_date as "Date de création" from brassens_actions inner join brassens_users on SUBSTRING(brassens_actions.anchor,6) =brassens_users.id order by brassens_actions.edit_date DESC limit 0,50
 Dans cet exemple, brassens est le nom de l'utilisateur... Tout ce qui est entre guillemets correspond aux noms que vont prendre les colonnes du tableau crée. Puis DESC limit 0,50 indique qu'il faudra afficher 50 item maximum.

Ici, elle classe ses données de manière à faire apparaître uniquement les actions à faire et rejetées. Et puis elle ajoute aussi une colonne indiquant les statuts des membres :

SELECT distinct sirh1_actions.title as "Tâches", brassens_users.nick_name as "Nom",case when brassens_actions.status = 'o' then 'à faire' when brassens_actions.status ='r' then 'rejeté' end as "Statut", brassens_actions.create_date as "Date de création" from brassens_actions inner join brassens_users on SUBSTRING(brassens_actions.anchor,6) =brassens_users.id where brassens_actions.status <> 'c' order by brassens_actions.status ASC limit 0,50

A présent, elle cherche à ce que YACs génère un lien vers la page de l'action correspondante :

SELECT
CONCAT( "/actions/view.php?id=", sirh1_actions.id ) AS id,
brassens_actions.title AS "Tâches",
brassens_users.nick_name AS "Nom",
CASE WHEN brassens_actions.status = 'o'
THEN 'à faire'
WHEN brassens_actions.status = 'r'
THEN 'rejeté'
END AS "Statut",
brassens_actions.create_date AS "Date de création"
FROM brassens_actions
INNER JOIN brassens_users ON SUBSTRING( brassens_actions.anchor, 6 ) = brassens_users.id
WHERE brassens_actions.status <> 'c'
ORDER BY brassens_actions.status ASC, brassens_actions.create_date DESC
LIMIT 0 , 50

La même chose, mais sans indiquer de nom d'utilisateur (ce qui reviendra à afficher toutes actions pour tout utilisateur)

SELECT
CONCAT( "/actions/view.php?id=", yacs_actions.id ) AS id,
yacs_actions.title AS "Tâches",
yacs_users.nick_name AS "Nom",
CASE WHEN yacs_actions.status = 'o'
THEN 'à faire'
WHEN yacs_actions.status = 'r'
THEN 'rejeté'
END AS "Statut",
yacs_actions.create_date AS "Date de création"
FROM yacs_actions
INNER JOIN yacs_users ON SUBSTRING( yacs_actions.anchor, 6 ) = yacs_users.id
WHERE yacs_actions.status <> 'c'
ORDER BY yacs_actions.status ASC, yacs_actions.create_date DESC
LIMIT 0 , 50

PrécédentSuivantIndex