Comment insérer des données dans 2 (deux) tables simultanément ayants des clé etrangères?

Par défaut

Bonjour, aujourd’hui je fais ce Tuto grâce à une demande faite par: Charlo****** De****

Comment insérer des données dans 2 (deux) tables simultanément ayants une clé étrangère en PHP et MySQL ?

Supposons que nous avons ces deux tables suivantes:

  • Table Eleves: garde les informations relatives aux élèves
  • Table Inscription: défini la classe dans laquelle un élève appartient, sa scolarité et dans une année scolaire précise.

Vu que la clé primaire de la table ELEVES est étrangère dans la table INSCRIPTION, nous voulons insérer les données de l’élève une seule fois dans ces deux tables.

VOILA COMMENT LE FAIRE EN PHP et MySQL

1- Methode de connexion à ma base de donnée MySQL est MySQLi

[pastacode lang= »php » manual= »define(%22HOST%22%2C%20%22localhost%22)%3B%20%2F%2F%20Adresse%20du%20Serveur%20MySQL%0Adefine(%22USER%22%2C%20%22root%22)%3B%20%20%20%20%2F%2F%20Nom%20d’utilisateur%20dela%20DB.%20%0Adefine(%22PASSWORD%22%2C%20%22%22)%3B%20%20%20%20%2F%2F%20Mot%20de%20passe%20de%20la%20DB%0Adefine(%22DATABASE%22%2C%20%22ecole%22)%3B%20%2F%2F%20Nom%20de%20la%20DB%0A%24mysqli%20%3D%20new%20mysqli(HOST%2C%20USER%2C%20PASSWORD%2C%20DATABASE)%3B%0A%2F%2F%20TEST%20DE%20CONNEXION%201%0Aif(%24mysqli-%3Econnect_errno%20%3E%200)%7B%0A%20%20%20%20die(‘IMPOSSIBLE%20DE%20SE%20CONNECTER%20AU%20SERVEUR’%20.%24mysqli-%3Econnect_error)%3B%0A%7D » message= »Connexion à la Base de données MySQL » highlight= » » provider= »manual »/]

2- Données provenant de votre formulaire en mode POST

[pastacode lang= »php » manual= »%24nom%20%3D%20filter_input(INPUT_POST%2C’nom’%2CFILTER_SANITIZE_STRING)%3B%0A%24prenom%20%3D%20filter_input(INPUT_POST%2C’prenoms’%2CFILTER_SANITIZE_STRING)%3B%0A%24sexe%20%3D%20filter_input(INPUT_POST%2C’sexe’%2CFILTER_SANITIZE_STRING)%3B%0A%24classe%20%3D%20filter_input(INPUT_POST%2C’classe’%2CFILTER_SANITIZE_NUMBER_INT)%3B%0A%24scolarite%20%3D%20filter_input(INPUT_POST%2C’scolarite’%2CFILTER_SANITIZE_NUMBER_INT)%3B%0A%24idann_sco%20%3D%20filter_input(INPUT_POST%2C’idann_sco’%2CFILTER_SANITIZE_NUMBER_INT)%3B » message= »Donnée venant de votre formulaire en POST » highlight= » » provider= »manual »/]

3- Insertion de données dans les tables.

[pastacode lang= »php » manual= »%2F%2F%20insertion%20dans%20table%20eleves%0A%24sql%20%3D%20%24mysqli-%3Eprepare(%22INSERT%20INTO%20eleves%20(nom%2Cprenom%2Csexe)%20VALUES%20(%3F%2C%3F%2C%3F)%22)%20or%20die(mysqli_error(%24mysqli))%3B%0A%24sql-%3Ebind_param(‘sss’%2C%24nom%2C%24prenom%2C%24sexe)%3B%0Aif(%24sql-%3Eexecute())%7B%0A%09%2F%2F%20recuperation%20du%20dernier%20IDELEVE%20ins%C3%A9re%C3%A9%20dans%20la%20table%20eleves%0A%09%24ideleves%20%3D%20%24sql-%3Einsert_id%3B%0A%09%2F%2F%20Insertion%20dans%20la%20table%20inscription%0A%09%24int%20%3D%20%24mysqli-%3Eprepare(%22INSERT%20INTO%20inscription%20(ideleves%2Cclasse%2Cscolarite%2Cann_sco)%20VALUES%20(%3F%2C%3F%2C%3F%2C%3F)%22)%20or%20die(mysqli_error(%24mysqli))%3B%0A%09%24int-%3Ebind_param(‘iiii’%2C%24ideleves%2C%24classe%2C%24scolarite%2C%24idann_sco)%3B%0A%09if(%24int-%3Eexecute())%7B%0A%09%09echo%20’VOS%20DONNEES%20ONT%20BIEN%20ETE%20AJOUTEES%20DANS%20LSE%20DEUX%20TABLES’%3B%09%0A%09%7Delse%7B%0A%09%09die(‘Impossible%20d%5C’ins%C3%A9rer%20les%20donn%C3%A9e%20dans%20la%20deuxi%C3%A8me%20table%20(inscription).%20’.mysqli_error(%24mysqli))%3B%0A%09%7D%0A%7Delse%7B%0A%09die(‘Impossible%20d%5C’ins%C3%A9rer%20dans%20la%20table%20premiere%20table%3A%20Eleves%20’.mysqli_error(%24mysqli))%3B%09%0A%7D » message= »Insertion de données dans les deux tables. » highlight= » » provider= »manual »/]

N’hésitez pas à poster vos commentaires et suggestions au besoin.

Laisser un commentaire