|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Nouveau Membre du Club
![]() François Inscription : mars 2008 Messages : 59 ![]() |
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! |
|
|
00
|
|
|
#2 |
![]() ![]() Benjamin DelespierreDéveloppeur Web Inscription : février 2010 Messages : 2 984 ![]() |
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
|
|
10
|
|
|
#3 |
|
Nouveau Membre du Club
![]() François Inscription : mars 2008 Messages : 59 ![]() |
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! |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com