IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Modification de données dépendantes [MySQL]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Juillet 2004
    Messages
    89
    Détails du profil
    Informations personnelles :
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information

    Informations forums :
    Inscription : Juillet 2004
    Messages : 89
    Par défaut Modification de données dépendantes
    Bonsoir,

    Je développe actuellement une application e-commerce, et je me retrouve confronté à un problème de dépendences.

    J'explique: Lorsque le client passe une commande, celle-ci est enregistrée en utilisant les id des produits commandés, id addresse, id du mode de livraison, etc. Une suppression d'un de ces éléments et c'est la catastrophe, c'est pourquoi j'utilise le moteur InnoDb qui gère les clés étrangères, car on est jamais à l'abris d'un bug.

    Vient ensuite le problème de la modification: Si on modifie par exemple le nom d'un produit déjà commandé, la modification se reflète dans la commande.. J'aimerais règler le problème de manière élégante, maintenable et sécurisé.

    J'ai pensé à quelques solutions:
    - Checker le tout à la main, cette solution est lourde niveau code, et le moindre oublie peu devenir très méchant.
    - Ré-enregistrer les données dans la commande (on duplique donc tous les articles pour chaque commande, ce qui me semble plutôt lourd)
    - Ajouter un attribut booléen pour chaque produit, addresse, etc. qui indique si le produit est utilisable ou non (Lors d'une modification, on passe le produit actuel en "non-utilisable", et on en créer un nouveau).

    J'aimerais savoir si une de ces solutions vous semble valable, ou si vous en voyez une autre à laquelle je n'ais pas pensé.

    Merci

  2. #2
    Inactif   Avatar de Deallyra
    Profil pro
    Étudiant
    Inscrit en
    Février 2007
    Messages
    1 997
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2007
    Messages : 1 997
    Par défaut
    Une solution simple...
    Verrouilles tes enregistrements.

    Si une commande a été passée, tu ne devrais pas avoir le droit de modifier ton produit.

    C'est trop tard.

    Recrées un enregistrement.
    *Si la réponse vous convient, n'oubliez pas le tag
    *Exprimez vous dans un français correct; on prend le temps de vous lire, prenez le temps de bien écrire.
    *Et comment on interprète votre code? N'oubliez pas la balise!

    *Pour une mise en page simple avec des divs.
    *Pour faire des formulaires xHTML CSS.

  3. #3
    Membre confirmé
    Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Juillet 2004
    Messages
    89
    Détails du profil
    Informations personnelles :
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information

    Informations forums :
    Inscription : Juillet 2004
    Messages : 89
    Par défaut
    Un simple verrouillage enlève beaucoup de "souplesse" à l'utilisation

    Je pense donc effectivement créer un nouvel enregistrement pour simuler une modification, même si ça fait un peu bidouille de se dire "ce produit existe dans le passé" ^^

    J'attends de voir si quelqu'un a une meilleur solution, sinon je passe en résolu

  4. #4
    Inactif   Avatar de Deallyra
    Profil pro
    Étudiant
    Inscrit en
    Février 2007
    Messages
    1 997
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2007
    Messages : 1 997
    Par défaut
    Bidouillage ?

    Tu dois garder un historique...

    Tu dois savoir à quel produit faisait référence telle commande.

    Si tu souhaites ne pas "bidouiller" (ça me fait rire jaune) tu peux simuler un ON DELETE CASCADE.

    A savoir, chercher toutes les références à ton id et les supprimer de toutes les tables.

    Bonjour la perte d'information
    *Si la réponse vous convient, n'oubliez pas le tag
    *Exprimez vous dans un français correct; on prend le temps de vous lire, prenez le temps de bien écrire.
    *Et comment on interprète votre code? N'oubliez pas la balise!

    *Pour une mise en page simple avec des divs.
    *Pour faire des formulaires xHTML CSS.

  5. #5
    Membre confirmé
    Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Juillet 2004
    Messages
    89
    Détails du profil
    Informations personnelles :
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information

    Informations forums :
    Inscription : Juillet 2004
    Messages : 89
    Par défaut
    Exactement, c'est pour cela que j'ai rendu la suppression impossible

    En fait, en attachant le mot "historique" à la solution, celle-ci parait de suite plus intuitive, j'avais vu ça autrement .

    Merci!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [JTable] Interdire la modification des données ?
    Par Cyborg289 dans le forum Composants
    Réponses: 7
    Dernier message: 25/02/2013, 10h40
  2. Réponses: 2
    Dernier message: 21/03/2006, 15h22
  3. Modification des données impossible
    Par Virgile59 dans le forum Access
    Réponses: 8
    Dernier message: 03/03/2006, 14h41
  4. Réponses: 6
    Dernier message: 15/02/2006, 14h02
  5. [MySQL] Modification de données utilisateurs
    Par Paniez dans le forum PHP & Base de données
    Réponses: 10
    Dernier message: 05/02/2006, 22h58

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo