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

2 réponses

  1. 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)
    0
    1. Modérateur
      Question 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
      0
    2. oui la valeur de l'idProf que j'essaie d'insérer existe dans wp_professeur
      0