Suppression de champs dans table liée

[Fermé]
Signaler
Messages postés
75
Date d'inscription
jeudi 13 septembre 2012
Statut
Membre
Dernière intervention
24 avril 2020
-
Messages postés
75
Date d'inscription
jeudi 13 septembre 2012
Statut
Membre
Dernière intervention
24 avril 2020
-
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

3 réponses

Messages postés
16462
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
1 août 2021
883
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?
Messages postés
75
Date d'inscription
jeudi 13 septembre 2012
Statut
Membre
Dernière intervention
24 avril 2020
5
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 ?
Messages postés
16462
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
1 août 2021
883
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?
Messages postés
75
Date d'inscription
jeudi 13 septembre 2012
Statut
Membre
Dernière intervention
24 avril 2020
5
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.