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 :

Création tables liées à un objet avant celui-ci [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
    Inscrit en
    Mars 2008
    Messages
    59
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2008
    Messages : 59
    Par défaut Création tables liées à un objet avant celui-ci
    Bonjour à tous.
    Derrière ce titre un peu capillotracté, je vous explique la situation.

    J'ai réalise un formulaire qui comprend plusieurs parties:

    Objet A:
    Nom objet A:
    Plein d'autres choses sur A...
    ID_Objet B
    ID_Objet C


    Objet B:
    ID de B:
    Nom de B:
    ...

    Objet C:
    ID de C:
    Nom de C:
    ...

    Mon formulaire illustre la structure de ma base de données.

    J'ai 3 tables: A, B, C avec des clés étrangères de A vers B et de A vers C.
    Ces clés étrangères ne peuvent pas être nulles, sinon c'est la fin du monde.
    Les IDs de B et C ne sont pas auto_incrémenté mais proviennent d'un champ du formulaire

    Je dois donc avoir crée une entrée dans les tables B et C avant de pouvoir finaliser la création de mon objet A.

    Je bloque un peu sur la manière de procéder...

    J'ai imaginé une solution de la sorte:

    - Saisie du nom de A et d'autres champs
    - Saisie des champs liées aux objets B et C...

    Bouton Valider:

    INSERT dans BDD des objets B et C, récupération des IDs
    INSERT de A dans BDD, avec donnée du formulaire plus résultat requete précédente.

    Seulement voilà, imaginons que la création de B ou de C échoue (s'il y a une duplication de clés par exemple), comment assurer l'intégrité de mes données?

    Y a t'il moyen de créer une table A' temporaire (structure exactement identique à A avec des clés qui peuvent être nulles) et si la création de B et C réussie, je converti ma table temporaire A' en A.

    Merci pour vos tuyaux!

  2. #2
    Expert confirmé
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Par défaut
    Ce que tu cherche à faire est déjà prévu par MySQL et s'appelle les transaction.
    PDO te permet de les manipuler. En somme ça permet, sur des tables InnoDB uniquement, de n'appliquer les changements effectués par une série de requête que si toute la série de requête s'exécute avec succès, dans le cas contraire, un rollback est effectué et les tables retrouvent leur état précédent.

    Voir: http://php.net/manual/en/pdo.begintransaction.php

    Un mécanisme similaire peut être émulé avec des tables temporaires.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    59
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2008
    Messages : 59
    Par défaut
    Ouah génial! Cette extension est folle! Je savais pas qu'elle existait!

    J'y jette un coup d'oeil et reviendrais (très probablement) vers vous!

    Merci!

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 07/08/2008, 11h30
  2. Création tables liées Access mais pas vers Access
    Par Lockss dans le forum VB 6 et antérieur
    Réponses: 0
    Dernier message: 24/06/2008, 15h58
  3. Réponses: 2
    Dernier message: 10/01/2008, 14h49
  4. Réponses: 1
    Dernier message: 07/10/2007, 10h53
  5. création d'enregistrement sur 2 tables liées
    Par cyrillescot dans le forum Access
    Réponses: 2
    Dernier message: 15/01/2007, 08h22

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