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 :

insertion id client dans table externe [MySQL]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2018
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2018
    Messages : 10
    Par défaut insertion id client dans table externe
    Bonjour à tous !

    Je m'excuse si le titre du topic n'est pas assez explicite ou s'il s'agit du mauvais forum pour poster.

    Je souhaite réaliser une application web sous forme de formulaire capable de simuler un devis.

    J'ai une table client qui contient un champ idclient (clé primaire + auto-incrémentation) ainsi qu'un champ prénom, nom et email.


    Nom : aaaaaaaaa.PNG
Affichages : 560
Taille : 84,3 Ko


    J'ai une table devis, qui contient un champ iddevis (clé primaire + auto-incrémentation) ainsi que le champ numéroclient que j'ai mis en relation avec le champ idclient de ma table client.

    Nom : aaddd.PNG
Affichages : 561
Taille : 68,5 Ko

    J'aimerai faire en sorte que lorsque qu'un client simule un devis, l'id du client soit inséré dans le champ numéroclient de ma table devis mais je n'ai aucune idée de comment faire.

    Voici mon php, évidemment l'insertion des données dans les champ vitre et surface ne fonctionnent pas pour l'instant.
    J'ai essayé de faire en sorte que si l'email est déjà existant, aucun tuple n'est inséré dans la table client :


    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
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
     
    if(isset($_GET) && !empty($_GET))
      { 
    $n = $_GET['email'];
    $sql = "SELECT email FROM client WHERE email='".$n."'";
    $reponse = $dbh->query($sql);
    $donnees = $reponse->fetch();
    //si l'email n'existe pas
    if (empty($donnees['email']))
    {
      //insère infos client dans table client
     $sql = "INSERT INTO client(nom, prenom, email)
              VALUES( :nom, :prenom,:email )";
     
        $stmt = $dbh->prepare( $sql );
     
        $l = $_GET['nom'];
        $m = $_GET['prenom'];
        $n = $_GET['email'];
     
        $datas = [
         'nom' => $l,
         'prenom' => $m,
         'email' => $n
        ];
     
        $stmt->execute([
          ':nom' => $datas['nom'],
          ':prenom' => $datas['prenom'],
          ':email' => $datas['email'],
     
        ]);
    }
      //insère infos devis dans table devis
     
        $sql2 = "INSERT INTO devis(surface, vitre)
              VALUES( :surface, :vitre)";
     
        $stmt2 = $dbh->prepare( $sql2 );
     
    	  $o = $_GET['surface'];
        $p = $_GET['vitre'];
     
        $datas2 = [
        'surface' => $o,
         'vitre' => $p
        ];
     
        $stmt2->execute([
          ':surface' => $datas2['surface'],
          ':vitre' => $datas2['vitre'],
        ]);
    }
    ?>
    désolé si mon code est un peu bordélique

    merci d'avance !

  2. #2
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2018
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2018
    Messages : 10
    Par défaut
    up

    du coup j'ai trouvé grâce à la fonction lastInsertId(); je peux récupérer l'id de mon client et l'insérer dans le champ numeroclient de ma table devis

    cependant ça ne fonctionne pas lorsque mon client veut simuler un second devis, puisque j'ai fait en sorte que si l'email est déjà présent dans la table client alors aucun nouveau tuple n'est crée dans la table client du coup le lastInsertId est de 0

  3. #3
    Membre chevronné
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Avril 2018
    Messages
    537
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Avril 2018
    Messages : 537
    Par défaut
    Bonsoir

    Dans ce cas il faut faire une requête select qui récupere l'id
    puis une update qui la stocke dans ta 2eme table

    tu peux mettre directement les $_GET dans ton array $data si j''en suis ton code

  4. #4
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2018
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2018
    Messages : 10
    Par défaut
    Bonsoir,

    merci beaucoup pour la réponse

    j'ai déplacé les $_GET

    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
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    if(isset($_GET) && !empty($_GET))
    { //verifie si l'email existe
        $n = $_GET['email'];
        $sql = "SELECT email FROM client WHERE email='".$n."'";
        $reponse = $dbh->query($sql);
        $donnees = $reponse->fetch();
     
    //si l'email n'existe pas
    if (empty($donnees['email']))
    {
      //insère infos client dans table client
     $sql = "INSERT INTO client(nom, prenom, email)
              VALUES( :nom, :prenom,:email )";
     
        $stmt = $dbh->prepare( $sql );
     
        $stmt->execute([
          ':nom' => $_GET['nom'],
          ':prenom' => $_GET['prenom'],
          ':email' => $_GET['email'],
     
        ]);
     
      //insère infos devis dans table devis
        $id=$dbh->lastInsertId(); 
     
     
        $sql2 = "INSERT INTO devis(surface, vitre, numeroclient)
              VALUES( :surface, :vitre, ".$id.")";
     
        $stmt2 = $dbh->prepare( $sql2 );
     
        $stmt2->execute([
          ':surface' => $_GET['surface'],
          ':vitre' => $_GET['vitre'],
        ]);
    }
     
    //si l'email existe déjà
    else
    {
      //insère infos devis dans table devis
      $sql2 = "INSERT INTO devis(surface, vitre)
              VALUES( :surface, :vitre)";
     
        $stmt2 = $dbh->prepare( $sql2 );
     
        $stmt2->execute([
          ':surface' => $_GET['surface'],
          ':vitre' => $_GET['vitre'],
        ]);
      //insère idclient dans table devis
        $requser = $dbh->prepare("SELECT idclient FROM client WHERE email='".$n."'");
        $requser->execute();
        $test;
        $test  = $requser->fetch();
        $sql3 = "UPDATE devis(numeroclient)
                VALUES("$test['idclient']")";
        $stmt3 = $dbh->prepare( $sql3 );
        $stmt3->execute();
    }
    }
    ?>
    J'ai essayé de sélectionner l'idclient et de l'insérer dans la table devis mais je pense que je m'y prends très mal :(

    J'ai mis tout ça à la fin dans un else, dans le cas où l'email existe déjà dans la table client

  5. #5
    Membre chevronné
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Avril 2018
    Messages
    537
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Avril 2018
    Messages : 537
    Par défaut
    Pourquoi désfois une requête préparée désfois une normale?

    Sinon tu utilises PDO tu peux regarder le manuel

    Jette un coup d'oeil sur les requetes sql au passage


  6. #6
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2018
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2018
    Messages : 10
    Par défaut
    je pense que je me rapproche mais c'est toujours pas ça

    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
    //si l'email existe déjà
    else
    {//insère infos devis dans table devis
      $sql2 = "INSERT INTO devis(surface, vitre)
              VALUES( :surface, :vitre)";
     
        $stmt2 = $dbh->prepare( $sql2 );
     
        $stmt2->execute([
          ':surface' => $_GET['surface'],
          ':vitre' => $_GET['vitre'],
        ]);
        //recherche dernier iddevis inséré dans la table devis
        $id=$dbh->lastInsertId(); 
        //sélectionne idclient correspondant à l'email rentré dans le formulaire et l'insère dans une variable
        $requser = $dbh->query("SELECT idclient FROM client WHERE email='".$n."'");
        $requser->execute();
        $insert;
        $insert = $requser->fetch();
        //update numeroclient dans la table devis
        $sql3 = $dbh->prepare("UPDATE devis
                SET numeroclient='".$insert[0]."' WHERE iddevis = '".$id."'");
        $sql3->execute();
    }

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

Discussions similaires

  1. [MySQL] Problème insertion de données dans table Mysql
    Par Malcolm78 dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 24/10/2007, 17h25
  2. Problème chargement dans table externe
    Par finesse20 dans le forum SQL
    Réponses: 1
    Dernier message: 07/08/2007, 10h10
  3. Problème insertion nouveau champs dans table
    Par antoine1504 dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 04/07/2007, 12h00
  4. Insertion en masse dans table de fait
    Par niiccoo dans le forum Oracle
    Réponses: 19
    Dernier message: 29/05/2006, 10h56
  5. [MySQL] Problème d'insertion de données dans table d'associations
    Par Yukhaa dans le forum PHP & Base de données
    Réponses: 13
    Dernier message: 07/02/2006, 17h10

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