Ajout d'une clé etrangère
Bonjour
Dans mon formulaire, j'ai un champ avec un label qui est la clé etrangère
Comment ajouter celle ci dans la table
Merci
Dans mon formulaire, j'ai un champ avec un label qui est la clé etrangère
Comment ajouter celle ci dans la table
Merci
2 réponses
-
Je me connecte à la bdd en PDO
J'ai deux tables wp_professeur et wp_cours
Dans wp_cours,j'ai une clé etrangère idProf(clé primaire dans la table wp_professeur)
Mon code est celui ci:
Dans le fichier Cours.php
<!DOCTYPE html> <html> <head> <title> </title> </head> <body> <h3> COURS </h3> <form method='post' action=''> Intitule: <input type='text' name='intitule'><br><br> vh: <input type='text' name='vh'><br><br> idProf: <input type='text' name='idProf'><br><br> <input type='submit' value='Ajouter' name='Ajouter'> </form> <?php include('Connexion.php'); if(isset($_POST['Ajouter'])) { $intitule=$_POST['intitule']; $vh=$_POST['vh']; $idProf=$_POST['idProf']; $inserer="INSERT INTO wp_cours(intitule,vh,idProf) VALUES('$intitule','$vh','$idProf')"; $inserer=$DB->exec($inserer); if($inserer) echo "<br/>Insertion effectuée "; else { $table_erreurs=$DB->errorInfo(); echo"<br/>Erreur : $table_erreurs[2]"; } }; ?> </body> </html>
Dans le fichier Professeur.php<!DOCTYPE html> <html> <head> <title> </title> </head> <body> <h3> PROFESSEURS </h3> <form method='post' action=''> Nom: <input type='text' name='Nom'><br><br> Prenom: <input type='text' name='Prenom'><br><br> Grade: <input type='text' name='Grade'><br><br> <input type='submit' value='Ajouter' name='Ajouter'> </form> <?php include('Connexion.php'); //Insertion des données dans la BD if(isset($_POST['Ajouter'])) { $nom=$_POST['Nom']; $prenom=$_POST['Prenom']; $grade=$_POST['Grade']; //le stockage dans la BD $inserer="INSERT INTO wp_professeur(Nom,Prenom,Grade) VALUES ('$nom','$prenom','$grade')"; $inserer=$DB->exec($inserer); if($inserer) echo "<br/>Insertion effectuée "; else { $table_erreurs=$DB->errorInfo(); echo"<br/>Erreur : $table_erreurs[2]"; } }; ?> </body> </html>
Voici la Structure de mes Tables :
Structure de la table `wp_cours`
CREATE TABLE IF NOT EXISTS `wp_cours` ( `idCours` int(50) NOT NULL AUTO_INCREMENT, `intitule` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_520_ci NOT NULL, `vh` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_520_ci NOT NULL, `idProf` int(255) NOT NULL, PRIMARY KEY (`idCours`), KEY `idProf` (`idProf`), KEY `idProf_2` (`idProf`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
Structure de la table `wp_professeur`
CREATE TABLE IF NOT EXISTS `wp_professeur` ( `idProf` int(255) NOT NULL AUTO_INCREMENT, `NOM` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_520_ci NOT NULL, `Prenom` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_520_ci NOT NULL, `Grade` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_520_ci NOT NULL, PRIMARY KEY (`idProf`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=3 ;
NB:Pour l'insertion des données dans wp_professeur Ca marche
Je suis bloqué dans l'insertion dans wp_cours
Voici l'erreur affiché
Erreur : Cannot add or update a child row: a foreign key constraint fails (`wordpress`.`wp_cours`, CONSTRAINT `fkcp` FOREIGN KEY (`idProf`) REFERENCES `wp_professeur` (`idProf`) ON DELETE CASCADE ON UPDATE CASCADE)-
ModérateurQuestion bête... est ce que la valeur de l"idProf que tu essaies d'insérer existe dans la table wp_professeur ?
Et vu que tu fais du PDO, il serait bien également de gérer correctement les erreurs.
Regarde ce que donne ceci :
https://forums.commentcamarche.net/forum/affich-37584941-php-pdo-gerer-les-erreurs
Et vu que tu débutes dans la programmation php, prends tout de suite de bonnes habitudes : https://forums.commentcamarche.net/forum/affich-37584947-php-gestion-des-erreurs-debogage-et-ecriture-du-code -
-