8768 sujets

Développement web côté serveur, CMS

Bonjour,
je cherche des pistes de réflexion et/ou des méthodes pour traiter la problématique suivante:

Dans le cas d'une application web en Php/mysql qui gère la progression de l'exécution d'un processus de fabrication dans lequel sont impliqués un demandeur (le client) et un prestataire (le fournisseur).
Le traitement de la commande inclus plusieurs étapes (case à cocher et champs texte) à gérer par les deux parties:
- réception de la commande (par le fournisseur)
- vérification des éléments associés à la commande (par le fournisseur)
- démarrage fabrication (par le fournisseur)
- envoi produit fini (par le fournisseur)
- réception du produit (par le client)
- vérification du produit (par le client)
- gestion des observations (par les deux parties)
- clôture de la commande (par le client)

Ce traitement s'opérerait dans un page hébergeant un formulaire dans lequel les deux parties pourraient compléter les parties qui le concernent.
Ce que je voudrais c'est , lorsque un partie ouvre une commande pour la compléter, que cette commande soit bloquée, un peu comme dans Wordpress lorsque l'on veut modifier un article et que le tableau de bord informe que "XXX est en train de modifier l'article".
Lorsque la personne modifiant la commande aurait validé le formulaire, l'article deviendrait à nouveau disponible pour un autre utilisateur qui lui l'ouvrirait dans sa dernière version.

Quelles sont en général les techniques que l'on emploie dans ce contexte?
- on créé un champ (true/false) dans la BDD pour caractériser l'état de la commande à l'instant t?
- Que fait-on si un utilisateur laisse une fenêtre ouverte sur une commande en modification sans avoir validé le formulaire? on le déconnecte au bout d'un temps t?

Je cherche des idées......
Salut Smiley smile

Il y a plusieurs questions qui se posent autour de ta réflexion.
D'une part y a t il 1 ou n client pour la même commande ?
De la même façon y a t il un ou n intervenant côté fournisseur ??

Déjà selon ces réponses la logique ne sera pas la même

On peut voir d'après ton premier jeté que ce qui concerne le fournisseur, n'est géré que par lui et pareil pour le client SAUF la partie observation.
Au final il n'y aurait que cette partie à bloquer ??

Bref pour les pistes et les idées.
Distinguer les modes : Visualisation, modification
Si tu passes en modification tu colles un bool quelque part et tu bloques
Et à la validation tu dégages le bool.
C'est ce que tu as déjà pensé. Et oui après un certain laps de temps tu libères la modification si la personne n'a pas validé.

C'est LA solution la plus simple et parmi les plus efficaces.

Mais j'ai aps forcément tous les éléments pour t'aider plus Smiley cligne
En principe il y a un seul client et un seul fournisseur par 'commande' ...
le formulaire représente la partie édition
Dans tout ces problémes j'ais toujours utilisé des choses bétes simple mais imparables.
ta base de donnée doit avoir deux données dans ta table de datas, "flag" et "flagtime" lorsqu'un visiteur vient lire EN MODIFICATION AVEC DROITS VALIDES,
1) tu controle que son nom a les droits
(si non message => vous ne pouvez modifier cet enregistrement)
2) tu contrôle que flag contient son nom OU est vide OU **
(si non message => cet enregistrement est en cour de mise a jour, réessayez dans qq minutes)
3) Si 1 et 2 OK tu lui donne le data en modification, rempli flag avec son nom, et timestamp

** Cas particulier bien sur si ce n'est pas son nom et que la durée flagtime-timestamp exéde 4
minutes, tu lui donne le data et informe son nom et le timestamp !

Car c'est la toute l'astuce, celui qui occupait le data , lorsqu'il voudra réécrire ce data aura un message ==> désolé vous avez dépassé le temps imparti !

Voila l'Ami