Bloquer un poste

Petit nouveau ! | 2 Messages

24 janv. 2008, 14:18

Bonjour,

Voilà, j'ai un petit problème.

J'aimerais qu'on puisse bosser plusieurs sur une base de données (qui contient numéros de clients, adresse, suivi etc.). Le problème est que j'aimerais que lorsque un d'entre nous a ouvert un poste, un autre ne puisse pas le modifier en même temps.

Est-ce possible?

Merci de vos réponses.

--
Amicalement,

Chill

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

24 janv. 2008, 14:34

Comment est-ce que tu accèdes à la base de données ?

Si c'est via PHPMyAdmin, je ne crois pas que ça soit possible.
Si c'est via une application PHP, il te suffit de mémoriser en base qu'un enregistrement est en modification et d'interdire l'accès à la fiche de modification le cas échéant.
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Petit nouveau ! | 2 Messages

24 janv. 2008, 14:46

Bonjour,

Merci de la réponse.
Comment est-ce que tu accèdes à la base de données ?

Si c'est via PHPMyAdmin, je ne crois pas que ça soit possible.
Si c'est via une application PHP, il te suffit de mémoriser en base qu'un enregistrement est en modification et d'interdire l'accès à la fiche de modification le cas échéant.
Non, je fais l'interface moi-même en PHP.

Comment mémorise-t-on en base qu'un enregistrement est en modification?

(encore, merci, hein?)

--
Amicalement,

Chill

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

24 janv. 2008, 14:53

Il faut que tu ajoutes 2 champs dans la table en question : en_modification, date_modification.
en_modification contient 0 si l'enregistrement est "libre" ( => pas en modification) ou 1 si l'enregistrement est en modification.
date_modification contient la date de la dernière fois que le champ en_modification est passée de 0 à 1.

Dès que tu ouvres une fiche pour permettre la modification d'un enregistrement, tu changes la valeur du champ en_modification de 0 à 1. Quand la personne valide ou annule cette modification, tu repasse à 0.
Quand une autre personne accède à cette fiche, si le champ en_modification vaut 1 et que date_modification est datée de moins de X minutes, tu refuses l'accès.

L'utilité du champ date_modification est de permettre de ne pas bloquer un enregistrement si la dernière personne a avoir ouvert la fiche a quitté la page autrement que prévu (changer de site, fermer le navigateur, ...)
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

24 janv. 2008, 17:01

J'ajouterais également l'id de l'utilisateur qui effectue la modification.. ça permet de savoir qui bloque l'enregistrement, ce qui peut toujours être interessant également :)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Invité
Invité n'ayant pas de compte PHPfrance

24 janv. 2008, 17:10

Il faut que tu ajoutes 2 champs dans la table en question : en_modification, date_modification.
en_modification contient 0 si l'enregistrement est "libre" ( => pas en modification) ou 1 si l'enregistrement est en modification.
date_modification contient la date de la dernière fois que le champ en_modification est passée de 0 à 1.
Waow!

super! Merci mille fois à tous les deux.

S-u-p-e-r!

Merci, merci :-)

--
Amicalement,

Chill

ViPHP
ViPHP | 5924 Messages

24 janv. 2008, 17:15

J'aurais enlevé en_modification, et mis le champ date_modification comme champ NULL, c'est à dire que si une modification est en cours, tu as le timestamp ou la date de début de modification, et si aucune modification n'est en cours, le champ est à NULL. Ca te fait économiser une colonne…

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

24 janv. 2008, 17:59

En fait, je pensais conserver la date de la dernière modification :?
C'était dans la même idée que ce que propose Ryle, à savoir conserver un mini historique limité à la dernière modification.

Après, c'est vrai que j'aurais dû le préciser pour que chill choisisse en toute connaissance de cause. :oops:
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer