Page 1 sur 1

Eviter les doublons

Posté : 01 janv. 2016, 17:57
par alexkab
Bonjour et bonne année !

J'ai un petit site en php tres basique avec des session.
On a un une page d'acceuil avec des news que tout le monde peu modifier ou mettre a jour. Le problème c'est quand quelqu'un est en train de modifier une news rien n’empêche une autre personne de cliquer sur "modifier la news" et quand la premiere personne valide sa modification elle ne sera pas prise en compte car quelqu'un d'autre est en train de faire une modification et va la valider aussi.

En gros comment faire pour empecher l'acces a la modification de la news si quelqu'un est deja en train de la modifier, et de lui dire de repasser plus tard...

Voila merci d'avance sa m'aiderais bien si vous avez une solution !

Re: Eviter les doublons

Posté : 01 janv. 2016, 18:16
par or 1
tu ajoutes un champ dans la table avec l'heure de la dernière demande de modification de la news.
à la demande de modification de la news, tu regardes si ce champ a une valeur.
s'il en a une, tu avertis ou empeches ou permets de modifier la news.
s'il n'en a pas, tu mets à jour la valeur du champ.

Re: Eviter les doublons

Posté : 01 janv. 2016, 23:25
par Spols
Il faut aussi penser à celui qui voudrais éditer la news et qui abandonne.

Donc définir une deadline pour l'édition.
à la demande de modification de la news, tu regardes si ce champ a une valeur.
s'il en a une, tu avertis ou empeches ou permets de modifier la news si la date + deadline > maintenant.
s'il n'en a pas, tu mets à jour la valeur du champ.
Et lors du traitement du formulaire de sauvegarde, il faut vérifier que valeur en table + deadline < maintenant

Re: Eviter les doublons

Posté : 03 janv. 2016, 01:30
par alexkab
Bonjour, merci pour ses 2 reponses, par contre je suis debutant et surtout sa fait un moment que je n'avais pas touché au php de mon site.

"s'il en a une, tu avertis ou empeches ou permets de modifier la news si la date + deadline > maintenant."

Comment je fais pour etre sûr qu'au bout du temps de deadline défini la personne qui a abandoné la modification n'a plus la page de modification ouverte ? ou au moins qu'elle soit au courant que les modification au bout d'une certain temps ne seront plus prise en compte ?


Merci

Re: Eviter les doublons

Posté : 03 janv. 2016, 11:04
par @rthur
Comment je fais pour etre sûr qu'au bout du temps de deadline défini la personne qui a abandoné la modification n'a plus la page de modification ouverte ? ou au moins qu'elle soit au courant que les modification au bout d'une certain temps ne seront plus prise en compte ?
Si tu veux faire un truc vraiment propre, il faut mettre de l'ajax pour que la page d'édition vérifie régulièrement qu'elle a encore le droit de faire des modifs et le cas échéant si ce n'est plus le cas, avertir l'utilisateur.

Mon conseil serait que tu commences par quelque chose de très simple et ensuite tu complexifiera si besoin :
- en PHP tu enregistres une date/heure dans ta bdd de début d'édition, et je te conseille aussi de noter le nom d'utilisateur qui fait les modifs.
- en HTML, tu fais un simple compte à rebours en javascript pour informer l'utilisateur qu'il lui reste X minutes/secondes pour faire sa modif, si tu ne veux pas lui mettre la pression, tu peux aussi ne pas afficher le compte à rebours au début et l'afficher quand il reste moins de 2 minute par exemple. Quand le compte à rebours est fini, tu lui conseille de faire un copier/coller de ses modifs pour les conserver et éventuellement les reposter en rechargeant la page.

Quand l'utilisateur enregistre sa modification tu remets à zéro là où tu avais enregistré la date/heure de modif + nom de celui qui faisait la modif pour qu'un autre utilisateur puisse modifier à son tour.


Quand un utilisateur veut faire une modif, tu vérifies deux choses : 1) est-ce qu'il y a un utilisateur qui est noté comme en train de modifier et 2) si c'est le cas est-ce que son délai d'expiration est dépassé ou pas.