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

Langage PHP Discussion :

Insérer des données dans 2 (deux) tables simultanément ayant des clés étrangères?


Sujet :

Langage PHP

  1. #1
    Candidat au Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2018
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2018
    Messages : 1
    Points : 2
    Points
    2
    Par défaut Insérer des données dans 2 (deux) tables simultanément ayant des clés étrangères?
    Bonjour ,
    Je suis actuellement bloqué sur un problème dans mon projet de fin de cycle BTS Informatique, le problème est que je veux insérer des données dans une table SIMULTANÉMENT contenant une clé étrangère à partir d'un seul formulaire avec PDO . l'id de la table migre dans la table bureau
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    CREATE TABLE IF NOT EXISTS `bureau` (
      `idbureau` int(11) NOT NULL AUTO_INCREMENT,
      `designation` varchar(225) DEFAULT NULL,
      `service_idservice` int(11) NOT NULL,
      PRIMARY KEY (`idbureau`,`service_idservice`),
      KEY `fk_bureau_service_idx` (`service_idservice`)
    ) ENGINE=InnoDB AUTO_INCREMENT=20058 DEFAULT CHARSET=utf8;

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    CREATE TABLE IF NOT EXISTS `service` (
      `idservice` int(11) NOT NULL AUTO_INCREMENT,
      `designation` varchar(225) DEFAULT NULL,
      PRIMARY KEY (`idservice`)
    ) ENGINE=InnoDB AUTO_INCREMENT=10043 DEFAULT CHARSET=utf8;
    merci de m'aide

    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
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    <?php
    // include database connection file
    require_once'dbconfig.php';
    if(isset($_POST['insert']))
    {
     
    // Posted Values  
    $bureau=$_POST['bureau'];
    $service=$_POST['service'];
     
    // Query for Insertion
    $sql="INSERT INTO bureau (designation ,service_idservice ) VALUES(:b,:s)"; 
    //Prepare Query for Execution
    $query = $DB_con->prepare($sql);
    // Bind the parameters
    $query->bindParam(':b',$bureau,PDO::PARAM_STR);
    $query->bindParam(':s',$service,PDO::PARAM_STR);
    // Query Execution
    $query->execute();
    // Check that the insertion really worked. If the last inserted id is greater than zero, the insertion worked.
    $lastInsertId = $DB_con->lastInsertId();
    if($lastInsertId)
    {
    // Message for successfull insertion
    echo "<script>alert('Enregistrement inséré avec succès');</script>";
    echo "<script>window.location.href='burserv.php'</script>"; 
    }
    else 
    {
    // Message for unsuccessfull insertion
    echo "<script>alert('Quelque chose a mal tourné. Veuillez réessayer');</script>";
    echo "<script>window.location.href='buserv.php'</script>"; 
    }
    }
    ?>
     
    <!DOCTYPE html>
    <html lang="fr">
    <head>
        <meta charset="utf-8">
        <title>PHP CURD Operation using PDO Extension  </title>
            <meta name="viewport" content="width=device-width, initial-scale=1">
        <link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.0/css/bootstrap.min.css" rel="stylesheet">
        <script src="https://code.jquery.com/jquery-1.11.1.min.js"></script>
        <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.0/js/bootstrap.min.js"></script>
    </head>
    <body>
     
    <div class="container">
     
    <div class="row">
    <div class="col-md-12">
    <h3>Enregistrement de Bureau&Service |</h3>
    <hr />
    </div>
    </div>
     
     
    <form name="insertrecord" method="post">
    <div class="row">
    <div class="col-md-4"><b>Bureau</b>
    <input type="text" name="bureau" class="form-control" required>
    </div>
    <div class="col-md-4"><b>Service</b>
    <input type="text" name="service" class="form-control" required>
    </div>
    </div>
     
    <div class="row" style="margin-top:1%">
    <div class="col-md-8">
    <input type="submit" name="insert" value="Submit">
    </div>
    </div> 
     
     
     
    </form>
      <script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
    <!-- textaddneww -->
    <ins class="adsbygoogle"
         style="display:inline-block;width:728px;height:15px"
         data-ad-client="ca-pub-8906663933481361"
         data-ad-slot="3318815534"></ins>
    <script>
    (adsbygoogle = window.adsbygoogle || []).push({});
    </script>            
    </div>
    </div>
    </body>
    </html>
    Fichiers attachés Fichiers attachés

  2. #2
    Membre confirmé Avatar de ma5t3r
    Homme Profil pro
    Développeur freelance
    Inscrit en
    Mai 2015
    Messages
    320
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2015
    Messages : 320
    Points : 492
    Points
    492
    Par défaut
    Salut,

    Il me semble que ton approche n'est pas bonne.

    Si je comprends bien, ton objectif est d'associer 1 service à 1 bureau.
    Est-ce que tu es sûr qu'un bureau ne peut avoir qu'un seul service ?

    Si c'est le cas :
    Il est possible de le faire comme tu l'entends mais ça complique les choses sans connaitre l'ID du service que tu veux rattacher.
    Ca implique une requête au préalable dans ta table service afin de vérifier si ton service existe et éventuellement le créer s'il n'existe pas et récupérer lastInsertId pour le rattacher au bureau.
    Généralement, sauf cas particulier, on ne fait pas comme ça.

    Je te suggère de proposer une liste de choix concernant tes services.

Discussions similaires

  1. Réponses: 4
    Dernier message: 31/05/2017, 23h31
  2. Réponses: 12
    Dernier message: 06/08/2010, 16h00
  3. [AC-2003] Insérer des données dans une autre table
    Par franckimmo dans le forum VBA Access
    Réponses: 2
    Dernier message: 27/08/2009, 18h51
  4. Réponses: 2
    Dernier message: 14/11/2008, 18h42
  5. Réponses: 7
    Dernier message: 05/11/2008, 17h33

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