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 :

Formulaire et insertion des donnees dans des tables différentes


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
    Étudiant
    Inscrit en
    Mars 2019
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2019
    Messages : 25
    Par défaut Formulaire et insertion des donnees dans des tables différentes
    Salut,

    J'ai un petit soucis, j'ai un message d'erreur de type :
    PDOException: SQLSTATE[23000]: Integrity constraint violation: 1452 Cannot add or update a child row: a foreign key constraint fails
    que je n'arrive pas à résoudre.
    Voici le code et les captures de ma bdd. Je souhaiterai simplement enregistrer les données dans ma bdd ce qui fonctionnait (très mal ) avant que je mette en place les clés étrangères. J'ai tenté plusieurs solutions mais rien n' y fait. Si vous avez une idée ? c'est avec plaisir :-)

    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
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    <?php
    //gestion des erreurs
    try{
    //Connection à la base de données
    $bdd = new PDO('mysql:host=localhost; dbname=xxxxx; charset=utf8',  'root', '', array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));
    }catch (Exception $e){
    	die('Erreur : '.$e->getMessage());
    }
     
    //Enregistrement des données saisies dans la table client
    $req = $bdd -> prepare('INSERT INTO client(civilite, nom, prenom, adresse, codePostal, ville) VALUES (?, ?, ?, ?, ?, ?)');
    $req->execute(array($_POST['civilite'], 
    					$_POST['nom'], 
    					$_POST['prenom'], 
    					$_POST['adresse'], 
    					$_POST['codePostal'], 
    					$_POST['ville']));
     
    // enregistrement des données saisies dans la table devis
    $req = $bdd -> prepare('INSERT INTO devis(dateDevis, typeChantier, adresseChantier, villeChantier) VALUES (?, ?, ?, ?)');
    $req->execute(array($_POST['dateDevis'], 
    					$_POST['typeChantier'], 
    					$_POST['adresseChantier'], 
    					$_POST['villeChantier']));
     
    // Enregistrement des données saisies dans la table typetravaux
    $req = $bdd -> prepare ('INSERT INTO typetravaux(detail1, designation1, montantTotal, quantite1, quantite2, quantite3, quantite4, quantite5) VALUES (?, ?, ?, ?, ?, ?, ?, ?)');
    $req->execute(array($_POST['detail1'],
    					$_POST['designation1'],
    					$_POST['montantTotal'],
    					$_POST['quantite1'],
    					$_POST['quantite2'],
    					$_POST['quantite3'],
    					$_POST['quantite4'],
    					$_POST['quantite5']));
     
    //redirection visiteur
    header ('Location: index.php');
     
     
    ?>
    Nom : Capture.PNG
Affichages : 442
Taille : 43,2 Ko
    Nom : Capture1.PNG
Affichages : 408
Taille : 44,2 Ko

  2. #2
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Par défaut
    Bonjour,

    Je pense que la colonne idClient dans la table devis ne devrait pas être null (NOT NULL) sans valeur par défaut or que tu ne lui insères pas de valeurs. Tu dois récupérer l'idClient du précédent insertion et la mettre dans devis.

    A+.

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2019
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2019
    Messages : 25
    Par défaut
    Bonjour andry.aime,

    Merci pour ta réponse. J'ai modifier la colonne idClient à (NOT NULL) cependant, après quelques essais, je vois vois pas comment syntaxiquement je dois m'y prendre pour mettre l'idClient de l'insertion précédent et le mettre dans devis... Aurais tu un exemple pour que je puisse comprendre la syntaxe ? Ma table client est en auto incrément est ce que je dois l'enlever sur l'id des deux autres tables ?

    @+

  4. #4
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Par défaut
    Ce que tu dois faire c'est de mettre l'id du client dans les autres tables. Peut-on voir les structures de ces tables?

    A+.

  5. #5
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2019
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2019
    Messages : 25
    Par défaut
    Oui bien sûr !

    Nom : tableClient.PNG
Affichages : 389
Taille : 31,8 Ko
    Nom : tableDevis.PNG
Affichages : 383
Taille : 28,8 Ko
    Nom : tableTypetravaux.PNG
Affichages : 390
Taille : 47,2 Ko

    J'ai enlevé l'auto incrément sur l'id des tables devis et typeTravaux... Je suis un p eu perdu la

    Encore merci

    @+

  6. #6
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Par défaut
    La structure de tes tables ne sont pas bonne. Tu dois voir quelle table doit être liée avec quelle table, comment utiliser une clé étrangère. Regarde ici https://cyril-gruau.developpez.com/merise/

    A+.

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

Discussions similaires

  1. [Débutant] Insertion de donnees dans 2 tables [acces]
    Par kevan dans le forum VB.NET
    Réponses: 5
    Dernier message: 22/12/2015, 11h23
  2. Insert de donnees dans une table
    Par vinczente dans le forum Général Dotnet
    Réponses: 1
    Dernier message: 20/04/2009, 15h39
  3. Insertion de données dans 2 tables différentes.
    Par anthony_rexis dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 24/07/2007, 10h29
  4. Réponses: 2
    Dernier message: 17/10/2006, 11h25
  5. Réponses: 7
    Dernier message: 12/10/2004, 16h43

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