Page 1 sur 1

enregistrement en base

Posté : 27 mai 2005, 10:22
par renatane
bonjour,

alors alors,
j'ai une base de donnée qui contient 4 tables dont la table version:

cette table a 9 champs dont 2 en clé primaire. id_version et id_note.
cette table sert a enregistrer des notes (ecrites avec un titre, un texte.....)

dans l'ideal, je voudrait que lorqu'on crée une note, elle s'enregistre avec une incrementation de id_note (c'est une nouvelle note) et un id_versions a 0. Si on reprend cette note(a partir d'une autre page brouillon), et qu'on la modifie avant de la réenregistrer, j'aimerai qu'elle s'enregistre evc le mê id_note (car c la même note) mais avec une incrementation de id_version (car c une nouvelle version de la note).

auparavent, j'avait 1seul champ autoincrement en clé primaire. je pouvait enregistrer mes notes et les reprendre a partir d'un autre fichier (brouillon).

now, je ne sais plus comment m'y prendre et tout me parait compliqué.

tout d'abord, je ne sais pas comment faire pour enregistrer mes notes avec les bons id_version et id_note. je vasi devoir faire des test pour savoir si ma page est ouverte seule ou a partir d'un autre fichier, mais je ne voit pas comment changer l'enregistrement en base (avec id_version ou id_note modifiés selon que la page fut chargée a partir d'une autre ou non.

Posté : 27 mai 2005, 11:39
par pascaltje
si je comprends bien, les differentes versions d'une note ne sont pas écrasées sur un même enregistrement mais toutes archivées (= 1 enregistrement par version d'une note) ?

si c'est le cas je propose:

- mettre la clé id_note en int, pas auto_increment
- si on enregistre une nouvelle note, trouver l'id_note suivant (= le max de id_note + 1)
- si on enregistre une nouvelle version, reprendre id_note et pour id_version faire id_version + 1 (en supposant qu'on travaille sur la derniere version)

A+

Pascal

Posté : 27 mai 2005, 12:04
par renatane
tu a bien compris,

j'avait deja penser a cette solution qui me semble etre la seule utilisable.
Mais mon problème c'est comment faire savoir a ma page enregistrer que c'est une new note ou une new version. Comment changer les valeurs de ma requetes dans ma page enredgistrer selon que ce soit une version ou une note.

et aussi, je ne sait pas comment faire (dans ma requete) l'incrementation d'un champs.

je ne peut pas faire "id_version ++"

Posté : 27 mai 2005, 12:08
par pascaltje
c'est une nouvelle version si on a ouvert une note en modification;
c'est une nouvelle note si on passe par "créer une nouvelle note"

pour enregistrer, il faudrait détailler un peu plus le modèle car je suis perdu!

A+

Pascal

Posté : 27 mai 2005, 12:21
par renatane
et bien, grace a tes massages, je croi etre arrivée a ma solution.

si ma page de redaction de note est appelée du'une autre page (c'est a dire pour modifier)
je récupère l'id_note et l'id_version de la note ouverte.*
je crée une variable varV qui recuperera le (max des id_versions dont l'id_note correspond a celui récupéré) +1
je crée une variable varN qui recevra l'id_note récupéré.

sinon, (si c une nouvelle note) si la page est ouverte vierge,
je crée une variable varV qui recevra 1
je crée une variable varN qui recevra le max des id_notes de toute la table +1

et qd j''enverrai mon formulaire pour l'envoye en base via enregistrer.php, je transmettrait varN et varV.

bon, now, y'a plus qu'a!

merci