Suppression de champs dans table liée

mocoye Messages postés 73 Date d'inscription   Statut Membre Dernière intervention   -  
mocoye Messages postés 73 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,
Je souhaite supprimer un champs dans une table qui est liée voici mon code :

$bdd->beginTransaction();
 
$bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
 
$requete = "DELETE FROM `albums_p` WHERE id=?";
 
$reponse = $bdd->prepare($requete);
 
$reponse->execute(array($_GET['id']));
 
$bdd->commit();
 
echo '<p class="alert alert-success"><i class="fas fa-check-circle"></i> Tout c\'est bien passé l\'album a bien été supprimé, Féliciations !!!</p>';
 
echo '<p><a href="albums.php?action=ajouter" class="btn btn-success ajout"><i class="fas fa-plus"></i> ajouter un albums</a> <a href="albums.php" class="btn btn-light"><i class="fas fa-list-ol"></i> retour liste</a></p>';



J'ai le message suivant qui apparaît :

Fatal error: Uncaught PDOException: SQLSTATE[23000]: Integrity constraint violation: 1451 Cannot delete or update a parent row: a foreign key constraint fails (`cdos93_v2`.`photos`, CONSTRAINT `photos_ibfk_1` FOREIGN KEY (`id_th`) REFERENCES `albums_p` (`id_th`)) in C:\wamp64\www\cdos93_v2\regent\albums.php on line 167

j'ai bien compris que le problème venait du faite que ma table soit liée, mais comment faire pour pouvoir supprimer le champs en question sans impacter l'autre table,

D'avance merci de vos retours,


Configuration: Windows / Chrome 81.0.4044.122
A voir également:

3 réponses

yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 584
 
bonjour, il me semble que tu supprimes des enregistrements, pas des champs.

on dirait que tu veux supprimer un album tout en gardant ses photos, alors que tu as décidé que toute photo devait avoir un album.
peut-être veux-tu garder des photos sans albums?
0
mocoye Messages postés 73 Date d'inscription   Statut Membre Dernière intervention   6
 
Bonjour,

tout d'abord merci d'avoir répondu à mon message.

Pour préciser afin que la réponse soit la plus efficace possible :

j'ai 3 tables qui sont liées :
1/ theme : idt/themes
2/ albums : ida / album / vignette / id_th (qui reprend id de la table theme corresspondant)
3/ photos : idp / photos / id_th / id_alb_p (qui reprend id de la table albums corresspondant)

Pour les modifications et suppressions :
Les photos ne peuvent appartenir qu'à un seul album donc leur suppression entraîne la suppression de l'album et inversement.
en revanche un thème peut avoir plusieurs albums mais un album ne peut avoir qu'un thème

en fait pour schématiser :
- 1 thème = x albums = x photos
- 1 album = 1 thème = x photos
- x photos = 1 album = 1 thèmes

je ne sais pas si j'ai été claire ?
0
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 584
 
je ne vois pas le but d'avoir id_th dans la table photo.

tu écris que la suppression d'un album entraîne la suppression de ses photos.
et avant cela tu écrivais que tu voulais supprimer un album sans impacter l'autre table.
n'est-ce pas contradictoire?
0
mocoye Messages postés 73 Date d'inscription   Statut Membre Dernière intervention   6
 
effectivement après ton message et réflexion il n'y a pas d'intérêt à avoir l'id thème dans la table photo, je vais le supprimer.

En ce qui concerne l'impact de la suppression d'un album, en fait dans le cas de mon code, la suppression impact la table thème et en l’occurrence je ne veux pas que celle-ci soit impactée, mais effectivement il y aussi un impact sur la table photo et celle-ci doit être impacter.
0