Suppression de champs dans table liée

Fermé
mocoye Messages postés 76 Date d'inscription jeudi 13 septembre 2012 Statut Membre Dernière intervention 28 septembre 2023 - 24 avril 2020 à 12:02
mocoye Messages postés 76 Date d'inscription jeudi 13 septembre 2012 Statut Membre Dernière intervention 28 septembre 2023 - 24 avril 2020 à 14:09
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 23399 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 17 décembre 2024 Ambassadeur 1 556
24 avril 2020 à 12:26
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 76 Date d'inscription jeudi 13 septembre 2012 Statut Membre Dernière intervention 28 septembre 2023 6
24 avril 2020 à 12:42
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 23399 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 17 décembre 2024 1 556
24 avril 2020 à 13:21
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 76 Date d'inscription jeudi 13 septembre 2012 Statut Membre Dernière intervention 28 septembre 2023 6
24 avril 2020 à 14:09
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