IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Ecriture dans la base de données en php avec une clé étrangère


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Juillet 2011
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2011
    Messages : 15
    Par défaut Ecriture dans la base de données en php avec une clé étrangère
    Bonjour à tous, si je vous écris c'est que j'ai le cerveau qui boue depuis 2 jours sans trouver la solution à mon problème.
    Via un formulaire je dois insérer des données sur 2 tables (dictionnaire et mot) avec l'identifiant du dictionnaire comme clé étrangère dans la table mot.
    voici le code d'insertion:


    Voici comment j'ai créé mes tables:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    CREATE TABLE dictionnaire ( iddico int(5) not null AUTO_INCREMENT PRIMARY KEY, 
    contexte varchar(32) NOT NULL, defintion varchar(255) NOT NULL, 
    categorie varchar(32) NOT NULL, synonyme varchar(255), exemple TEXT );
     
    CREATE TABLE mot ( idmot int(5) not null AUTO_INCREMENT PRIMARY KEY, iddico int(5) not null, 
    orthographe varchar(32) NOT NULL, CONSTRAINT fk_mot_dico FOREIGN KEY (iddico) 
    REFERENCES dictionnaire(iddico) on DELETE CASCADE on UPDATE CASCADE );
    Problème: il y a insertion de données dans la table dictionnaire mais aucune donnée insérée dans la table mot.
    Aidez-moi je vous en prie.

  2. #2
    Membre Expert

    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2011
    Messages
    1 723
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2011
    Messages : 1 723
    Par défaut
    Si tu pouvais copier-coller ton code dans une balise [code] ce serait bien plus pratique pour tout le monde (toi y compris) que d'attacher une image à ton message.

    Pourquoi fais-tu deux récupérations d'id de ton dictionnaire nouvellement créé ? La requête "SELECT iddico..." et le lastInsertId font la même chose, sauf que tu ne récupères pas le résultat dans le premier cas. Et ton problème doit venir du fait que tu exécutes cette requête SELECT entre ton INSERT et ton lastInsertId, le résultat doit être incorrect.

  3. #3
    Membre chevronné
    Homme Profil pro
    Autres
    Inscrit en
    Mai 2017
    Messages
    279
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Autres

    Informations forums :
    Inscription : Mai 2017
    Messages : 279
    Par défaut
    Pour commencer, il te faut poster ton code. Concernant ton problème, n'ayant pas le code d'insertion (s'il s'agit du PHP ou du SQL), je pense qu'il provient de la clé étrangère de dictionnaire dans mot car, tu dois récupérer l'id du dernier enregistrement de la table dictionnaire pour l'affecter au champ correspondant dans mot.

  4. #4
    Membre averti
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Juillet 2011
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2011
    Messages : 15
    Par défaut
    Bonjour à tous je m'excuse pour la qualité du code. Le voici:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
     
    <?php
    	include_once("connexion.php");	
    	//requete preparées
    	$requete_insertion_definition = $bdd->prepare('INSERT INTO dictionnaire(contexte, definition, categorie, synonyme, exemple)
    		VALUES(?,?,?,?,?)');
    	$req = $bdd->prepare('SELECT iddico FROM dictionnaire WHERE contexte=?');
    	$requete_insertion_mot = $bdd->prepare('INSERT INTO mot(iddico, ortographe) VALUES(?,?)');
     
    	//Execution des requêtes préparées
    	$requete_insertion_definition->execute(array($_POST['contexte'], $_POST['definitiondumot'], $_POST['cat'], 
    		$_POST['synonyme'], $_POST['exemple']));	
    	$req->execute(array($_POST['contexte']));
    	$iddico=$bdd->lastInsertId();//recuperation de l'id de la table dictionnaire dont je viens d'insérer les données			
    	$requete_insertion_mot->execute(array($iddico, $_POST['orthographe']));
     
    	//toujours terminer le traitement de la requête
    	$requete_insertion_mot->closeCursor();
    	$requete_insertion_definition->closeCursor();
    	$req->closeCursor();
     
    	//redirection vers la page d'accueil
    	header('Location:index.php');
    ?>
    Voici le code sql de création des tables:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
    CREATE TABLE dictionnaire ( 
    iddico int(5) not null AUTO_INCREMENT PRIMARY KEY, 
    contexte varchar(32) NOT NULL, 
    definition varchar(255) NOT NULL, 
    categorie varchar(32) NOT NULL, 
    synonyme varchar(255), exemple TEXT 
    );
     
    CREATE TABLE mot ( 
    idmot int(5) not null AUTO_INCREMENT PRIMARY KEY, 
    iddico int(5) not null, 
    orthographe varchar(32) NOT NULL, 
    CONSTRAINT fk_mot_dico FOREIGN KEY (iddico) REFERENCES dictionnaire(iddico) 
    	on DELETE CASCADE on UPDATE CASCADE 
    );

  5. #5
    Membre averti
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Juillet 2011
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2011
    Messages : 15
    Par défaut
    @Spartacusply,
    Merci pour ton post, c'est parceque ça ne marchait pas que j'ai lu qu'on pouvait recupéré cet id (iddico) via le lastInsertId() que j'ai inséré cette requête, mais même sans la requête du lastInsertId, ça ne marche toujours pas.

  6. #6
    Membre averti
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Juillet 2011
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2011
    Messages : 15
    Par défaut
    Voici le formulaire en question:
    Nom : Capture.PNG
Affichages : 961
Taille : 20,2 Ko
    Quand je valide, les données sont bel et bien enregistrées dans la table "dictionnaire" mais rien n'est enregistré dans la table "mot".

  7. #7
    Membre chevronné
    Homme Profil pro
    Autres
    Inscrit en
    Mai 2017
    Messages
    279
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Autres

    Informations forums :
    Inscription : Mai 2017
    Messages : 279
    Par défaut
    Il y'a à faire.
    Je suis entrain de regarder ton code

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [MySQL] Update d'une table dans la base des données mysql php
    Par glodybiss4 dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 07/02/2012, 16h51
  2. Réponses: 5
    Dernier message: 28/02/2011, 21h42
  3. Réponses: 1
    Dernier message: 19/08/2009, 21h20
  4. Réponses: 0
    Dernier message: 20/05/2009, 20h29
  5. affichage dans la base de donnée en php
    Par hadjiphp dans le forum Langage
    Réponses: 2
    Dernier message: 26/04/2009, 00h06

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo