Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD > PHP & MySQL
PHP & MySQL Forum d'entraide sur les fonctions MySQL avec PHP. Avant de poster -> FAQ MySQL, Cours MySQL et Sources MySQL. Pour les questions concernant le moteur MySQL plutôt que les fonctions PHP, merci d'utiliser le forum MySQL.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 16/03/2011, 17h38   #1
Nouveau Membre du Club
 
François
Inscription : mars 2008
Messages : 59
Détails du profil
Informations personnelles :
Nom : François
Localisation : France, Ille et Vilaine (Bretagne)

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

Informations forums :
Inscription : mars 2008
Messages : 59
Points : 25
Points : 25
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!
franquis est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/03/2011, 18h45   #2
Modérateur
 
Avatar de Benjamin Delespierre
 
Benjamin Delespierre
Développeur Web
Inscription : février 2010
Messages : 2 984
Détails du profil
Informations personnelles :
Nom : Benjamin Delespierre
Âge : 24
Localisation : France

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

Informations forums :
Inscription : février 2010
Messages : 2 984
Points : 5 014
Points : 5 014
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.
__________________
A la recherche d'un framework MVC facile a prendre en main ? Essayez Axiom
Nouveau: la référence d'Axiom est disponible sur GitHub (je la peaufine en ce moment même).

Un problème correctement identifié est à moitié résolu, évitez de poster l'intégralité de votre code avec pour seule explication "ça ne marche pas...".
Pour identifier correctement vos problèmes PHP, utilisez la gestion des erreurs et xdebug.

Les boutons et existent, servez-vous en
Benjamin Delespierre est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 17/03/2011, 10h05   #3
Nouveau Membre du Club
 
François
Inscription : mars 2008
Messages : 59
Détails du profil
Informations personnelles :
Nom : François
Localisation : France, Ille et Vilaine (Bretagne)

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

Informations forums :
Inscription : mars 2008
Messages : 59
Points : 25
Points : 25
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!
franquis est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 19h11.


 
 
 
 
Partenaires

Hébergement Web