Bonjour !
Je crée ce sujet car je travaille dans un petit laboratoire où j'ai développé une application pour saisir des données sur des études scientifiques.
Mon problème est le suivant : deux utilisateurs peuvent remplir en même temps un formulaire lié à un même enregistrement de ma base de données MySQL. Normalement, la façon dont j'ai développée est conçue pour minimiser ce risque d'erreur, mais il n'est pas nul. J'aimerais donc le rendre nul !
J'ai déjà réfléchi au problème et voici les pistes que j'ai trouvées :
-Mes formulaires sont par défauts en mode lecture seul, un bouton est présent pour pouvoir rentrer des modifications. Une fois les modifications terminées, l'utilisateur clique sur un bouton sauvegarder, la base se met à jour, et le formulaire réapparaît en mode modification. Donc je peux envoyer dans une table de la base de données l'information que le formulaire est en cours de modification, et empêcher les autres utilisateurs de le mettre en mode modification tant que c'est le cas. Problème : qu'en est-il de la libération du formulaire ? Ok, il sera libéré avec le bouton "Sauvegarder", mais si l'utilisateur ne clique pas dessus ? S'il ferme son navigateur à l'arrache ? J'imagine qu'en JQuery je peux envoyer un message au serveur sur une fermeture du navigateur, mais il faut savoir qu'on a aussi des coupures de wifi de temps en temps (cartes wifi de certains ordinateurs vraiment pas terrible), bref, il y a un risque non négligeable que le signal de libération n'arrive jamais et que le formulaire se retrouve bloqué définitivement jusqu'à mon intervention.
-Envoi constant toutes les 5 secondes d'un signal à Jquery disant que le formulaire est occupé (ce qui mettrait une table de base de données à jour qui serait consultée à chaque fois qu'on veut modifier un formulaire) : ça me paraît réaliste, mais toujours le problème de coupure de réseau... Au moins, ça ne bloquerait pas définitivement l'accès à un formulaire, mais ça poserait le souci que sur une coupure, deux personnes peuvent être en même temps en train de modifier le même formulaire si la deuxième arrive pendant une coupure de quelques secondes du premier, mais déjà, le risque est bien plus faible. Vu que nos bases ne sont pas très lourdes, je ne pense pas que ça congestionnerait énormément le serveur. Qui plus est, chaque personne étant loguée, je peux faire apparaître le nom de l'utilisateur bloquant le formulaire. C'est la solution à ma portée qui me paraît la plus fiable (à part que je ne sais pas encore modifier le contenu d'une base de données avec JQuery mais je peux apprendre, après si vous pouvez simplement me confirmer que c'est techniquement réalisable, ça m'arrangerait toujours^^).
Voilà, aucune des solutions n'est cependant fiable à 100% (même si la deuxième me paraît quand même très bien). J'hésite à mettre en place une solution avec un timer, ça me paraît assez risqué...
Merci pour votre attention !
Partager