Variable session (PHP) et triggers (MySQL)

Fermé
dominique - 13 août 2012 à 16:55
flokocha Messages postés 1510 Date d'inscription lundi 8 mars 2004 Statut Membre Dernière intervention 10 octobre 2015 - 14 août 2012 à 13:50
Bonjour,

Je suis actuellement en train de réaliser des triggers pour historiser automatiquement les modifications faites sur ma base de données.
Cette base de données est accessible par plusieurs utilisateurs via des comptes utilisateurs.
C'est pourquoi j'ai besoin de récupérer $SESSION pour la stocker dans mes tables d'historisation.
Je souhaiterai savoir si c'est possible d'utiliser $SESSION dans un trigger ? Et comment ?

Merci pour votre aide.


2 réponses

flokocha Messages postés 1510 Date d'inscription lundi 8 mars 2004 Statut Membre Dernière intervention 10 octobre 2015 280
14 août 2012 à 00:43
Salut,

Tout d'abord une petite précision :
"Cette base de données est accessible par plusieurs utilisateurs via des comptes utilisateurs."

Des comptes utilisateurs à quel niveau ? Au niveau de ton application ou au niveau de MySQL ?
0
Oui excuse moi, je ne l'ai pas précisé.
Ce sont des comptes utilisateurs au niveau de mon application.

C'est pour ça que je voudrais récupérer la variable $_SESSION['id_user'] pour pouvoir la stocker dans ma table historique. Et cela, grâce à des triggers. Est-ce possible tu penses ?
0
flokocha Messages postés 1510 Date d'inscription lundi 8 mars 2004 Statut Membre Dernière intervention 10 octobre 2015 280
Modifié par flokocha le 14/08/2012 à 11:26
Je ne suis pas un spécialiste des triggers, mais je vois mal comment à leur niveau ils pourraient avoir directement accès à cette info si elle n'est pas directement présente en base.

La solution qui me parait davantage envisageable est de stocker le contenu de ton $_SESSION['id_user'] dans un champ de la table concernée par l'historisation.

Mais dans tous les cas à mon sens cette info doit forcément être stockée quelque part en base par ton application elle-même si tu veux pouvoir y accéder par la suite depuis tes triggers.
0
Justement, je souhaiterai stocker le contenu de $_SESSION['id_user'] dans ma table d'historisation.
Le soucis, c'est que pour faire cela, et donc pour remplir cette table d'historisation, je passe par des triggers. Du coup, je bloque un peu, pour récupérer cette variable $SESSION.
0
flokocha Messages postés 1510 Date d'inscription lundi 8 mars 2004 Statut Membre Dernière intervention 10 octobre 2015 280
14 août 2012 à 13:50
Je me suis mal exprimé, ce que je voulais dire c'est qu'il faut stocker le contenu de $_SESSION['id_user'] dans la table visée par l'historisation, ou sinon dans une table spécifique qui fera le lien entre le user id et la ligne de la table concernée.

Et ensuite ton trigger peut utiliser cette donnée pour la stocker dans une table d'historisation.

Ex : tu as une table de la structure suivante que tu veux historiser via un trigger :

|    id    |  nom |  code  |
------------------------------
|   85    |  toto   |   520  |


Tu peux par exemple la transformer en cette structure :

|    id    |  nom |  code  |  last_edit |
---------------------------------------------
|   85    |  toto   |   520  |   loulou     |


Et faire insérer dans last_edit par ton application le login de l'utilisateur à l'origine de l'update qui a lieu sur une ligne.

Ainsi si par exemple "machin" intervient via ton appli et change le code de l'id 85 pour le code 400, ta table contiendra alors ceci :

|    id    |  nom |  code  |  last_edit |
---------------------------------------------
|   85    |  toto   |   400   |  machin   |


Et si ton trigger vise à tracer les changement de code sur cette table, il pourra ainsi facilement construire une table d'historisation telle que celle-ci :

| id | tableid | old  | new |            ts        |  user     |
-------------------------------------------------------------------------
| 1 |      85    |  0  | 520  | 2012-08-14 09:30:00 | loulou |
| 2 |      85    | 520 | 400  | 2012-08-14 12:38:00 | machin |
0