8722 sujets

Développement web côté serveur, CMS

Bonjour à tous;
je viens solliciter votre pour perfectionner mon bout du code pour modifier les données d'une table. Je souhaite à ce que lorsque je modifie les données de la table "sitesminiers", que les anciennes informations ainsi que la date de modification soit enregistrées sans la table "Archivage" pour garder une sorte d'historique du mouvement de mes sites. Vos orientations me seront précieuses.
Modifié par hbovy (28 Dec 2013 - 16:56)
Modérateur
Salut,

Avant de commencer à lire ton code, j'ai essayé ceci : J'ai pris l'écran et je l'ai retourné. Je voulais voir si le code édité reste bien collé. Je te rassure, ce n'est pas du Tefal, il reste bien accroché à l'écran. Tel que c'est présenté, ça donne pas envie. En période de Noël, c'est pas terrible une indigestion.
Modifié par niuxe (26 Dec 2013 - 19:22)
niuxe, voilà j'ai enlevé la partie PHP troublante; j'ai exprimé simplement mon besoin est-ce possible de m'orienter et/où éclairer là dessus ?
hbovy a écrit :
Bonjour à tous;
je viens solliciter votre pour perfectionner mon bout du code pour modifier les données d'une table. Je souhaite à ce que lorsque je modifie les données de la table "sitesminiers", que les anciennes informations ainsi que la date de modification soit enregistrées sans la table "Archivage" pour garder une sorte d'historique du mouvement de mes sites. Vos orientations me seront précieuses.


N'ayant pas le schéma SQL ni le code (que tu peux copier sur PasteBin ou équivalent afin de ne pas balancer des pages et des pages de code ici - bien qu'il serait sympa d'isoler les bouts de code que tu veux modifier), ni les indications sur ce qui te pose problème, je vais te répondre en termes généraux.

Tu peux faire ce que tu viens de demander de 2 façons: si ton hébergeur MySQL te le permet, tu peux utiliser les TRIGGERs de MySQL afin de réaliser ceci. Ceux-ci te permettent d'automatiser certaines actions avant ou après un INSERT ou un UPDATE, et ont la possibilité d'aller générer des INSERT/UPDATE/DELETE sur d'autres tables.

Plus d'infos à l'addresse suivante: http://dev.mysql.com/doc/refman/5.6/en/trigger-syntax.html

Dans ton cas, par exemple, si tu as une table du genre:
CREATE TABLE sitesminiers (id INT NOT NULL, info1 VARCHAR(255), info2 VARCHAR(255))


Et que tu veux copier ça dans une table identique appelée vieuxsitesminiers, ton trigger ressemblera à ceci:
CREATE TRIGGER copie_site BEFORE INSERT ON sitesminiers
FOR EACH ROW INSERT INTO vieuxsitesminiers (`id`,`info1`,`info2`) VALUES (OLD.id, OLD.info1, OLD.info2);


Cette fonction nécessite les privilèges SELECT, INSERT et TRIGGER sur la table (ou la bdd) en question.

L'autre façon est de le coder en PHP, bien entendu.
Merci Anima;
je m'y concentre sur tes orientations en cas des pépins je ne manquerai de poster.
Cdt