Partage
  • Partager sur Facebook
  • Partager sur Twitter

[PDO] Insertion dans deux tables différentes

Sujet résolu
    10 juin 2021 à 14:34:30

    Bonjour,

    Je possède un formulaire, où les valeurs récupérées dans les champs sont insérées dans deux tables différentes de ma bdd.

    Et puis bah elles s'insèrent pas.

    Merci de votre aide !

    Code :

    <?php
    session_start();
    echo '<h2>Information pour le debug</h2>';
    echo '<pre>';
      echo "variable GET : "; print_r($_GET);
      echo "variable POST : "; print_r($_POST);
      echo "variable SESSION : "; print_r($_SESSION);
      echo "variable FILES : "; print_r($_FILES);
    echo '</pre>';
    
    include 'connexion.php';
    if(isset($_POST['prix']))
    {
      $bdd = ouvrirBdd();
      // ajout d'un bien
      $req = "INSERT INTO `bien`(type,surface,ville,prix) VALUES (?,?,?,?)";
      $res = $bdd->prepare ($req);
      $res -> execute (array($_POST["type"], $_POST["surface"], $_POST["ville"],
                $_POST["prix"]));
      $req = "INSERT INTO `personne`(nom,prenom,login,email) VALUES (?,?,?,?)";
      $res = $bdd->prepare ($req);
      $res -> execute (array($_POST["nom"], $_POST["prenom"], $_POST["prenom"],
                            $_POST["mail"]));
    } ?>
    



    • Partager sur Facebook
    • Partager sur Twitter
      10 juin 2021 à 15:32:21

      Salut

      As-tu activé l'affichage des messages d'erreur de PHP et de PDO (cf. FAQ PHP – lien en signature – ou documentation officielle) ?

      Je soupçonne que certains noms de colonnes posent actuellement problème, je tenterais a minima de tous les encadrer avec les accents graves `.

      -
      Edité par Ymox 10 juin 2021 à 15:33:11

      • Partager sur Facebook
      • Partager sur Twitter
        10 juin 2021 à 17:23:29

        J'ai placé des antiquotes à tous les noms de colonnes mais rien y fait.

        La FAQ montre comment activer les messages d'erreur sur WAMP mais pas sur EasyPHP (mon serveur).

        Et de plus je possède plusieurs fichiers php.ini et je sais pas lequel choisir.

        Code :

        <?php
        session_start();
        echo '<h2>Information pour le debug</h2>';
        echo '<pre>';
          echo "variable GET : "; print_r($_GET);
          echo "variable POST : "; print_r($_POST);
          echo "variable SESSION : "; print_r($_SESSION);
          echo "variable FILES : "; print_r($_FILES);
        echo '</pre>';
        
        include 'connexion.php';
        if(isset($_POST['prix']))
        {
          $bdd = ouvrirBdd();
          // ajout d'un bien
          $req = "INSERT INTO `bien`(`type`,`surface`,`ville`,`prix`) VALUES (?,?,?,?)";
          $res = $bdd->prepare ($req);
          $res -> execute (array($_POST["type"], $_POST["surface"], $_POST["ville"],
                    $_POST["prix"]));
          $req = "INSERT INTO `personne`(`nom`,`prenom`,`login`,`email`) VALUES (?,?,?,?)";
          $res = $bdd->prepare ($req);
          $res -> execute (array($_POST["nom"], $_POST["prenom"], $_POST["prenom"],
                                $_POST["mail"]));
        } ?>
        



        • Partager sur Facebook
        • Partager sur Twitter
          10 juin 2021 à 17:28:42

          Pour savoir lequel des fichiers php.ini a modifier. Aide toi de la fonction phphinfo

          Les erreurs PDO sont activés ?

          • Partager sur Facebook
          • Partager sur Twitter
            10 juin 2021 à 18:28:42

            Je suis bien dans phpinfo(), j'ai trouvé la ligne où il ya pdo (dans le array).

            Ensuite plus bas ils m'indiquent une colonne PDO Driver for MySQL et une colonne enabled. Du coup je vois pas de fichier proposé...

            • Partager sur Facebook
            • Partager sur Twitter
              10 juin 2021 à 18:34:38

              C'est quoi le rapport entre PDO et php.ini  que tu me décris. 

              Je T'ai parlé de deux choses différents 

              • Partager sur Facebook
              • Partager sur Twitter
                10 juin 2021 à 19:03:39

                Je pensais que qu'avec phpinfo() je pouvais connaitre le fichier qui me permettrait d'activer les erreurs php et pdo si elles ne le sont pas, non ?

                • Partager sur Facebook
                • Partager sur Twitter
                  10 juin 2021 à 19:12:51

                  Phphinfo te permet de modifier le bon phi.ini et voir si les erreurs php sont activés. 

                  Pour PDO cela fait a la connexion a la bdd 

                  • Partager sur Facebook
                  • Partager sur Twitter
                    10 juin 2021 à 22:55:07

                    moi je vois que certains paramètre sont sur on et off, mais lequel est le bon ?

                    Mais après on m'affiche à chaque fois les erreurs PDO lorsqu'ils y en a

                    • Partager sur Facebook
                    • Partager sur Twitter
                      11 juin 2021 à 8:08:30

                      Alors tu pourrais avoir deux serveurs de bases de données et tu envoies dans celui où tu ne regardes pas.

                      • Partager sur Facebook
                      • Partager sur Twitter
                        11 juin 2021 à 10:58:07

                        Ah j'ai trouvé la source du problème.

                        Dans $_POST['prix'] j'entre un nombre entier et je vois avec un print_r que ce nombre n'est pas récupérer.

                        Comment je dois faire alors pour que le nombre entier soit récupérée ?

                        • Partager sur Facebook
                        • Partager sur Twitter
                          11 juin 2021 à 11:06:10

                          Cela dépend de comment il est envoyé. On n'a pas le code de cette partie, si je ne m'abuse.

                          • Partager sur Facebook
                          • Partager sur Twitter
                            11 juin 2021 à 11:08:06

                            Pour pouvoir te répondre, il nous faudrait le formulaire, pour confirmer que tu as bien un input dont le name est "prix".
                            • Partager sur Facebook
                            • Partager sur Twitter

                            Pas d'aide concernant le code par MP, le forum est là pour ça :)

                              11 juin 2021 à 11:12:14

                              Formulaire :

                              <?php
                              include 'entete.php';
                              ?>
                              <!DOCTYPE html>
                              <html lang="fr" dir="ltr">
                                <head>
                                  <meta charset="utf-8">
                                  <title>Devenir vendeur</title>
                                </head>
                              
                              <body class="container">
                                <div class="row">
                                  <section>
                                    <form class="row" action="insertion.php" method="post">
                                      <h2>
                                      <label for="civ">Civilité : </label>
                                      <label for="M">M.</label>
                                      <input type="radio" name="M" value="M">
                                      <label for="Mme">Mme</label>
                                      <input type="radio" name="Mme" value="Mme"><br>
                              
                                      <label for="ville">Nom : </label>
                                      <input type="text" name="nom" value="" maxlength="10">
                              
                                      <label for="quartier">Prénom : </label>
                                      <input type="text" name="prenom" value="" maxlength="10"><br>
                              
                                      <label for="adresse">Adresse : </label>
                                      <input type="text" name="adresse" value="" maxlength="10"><br>
                              
                                      <label for="téléphone">Téléphone : </label>
                                      <input type="text" name="téléphone" value="" maxlength="10"><br>
                              
                                      <label for="mail">Adresse e-mail : </label>
                                      <input type="text" name="mail" value="" maxlength="10"><br><br>
                              
                                      <input type="checkbox" name="type" value="maison" id="type" /> <label for="type">Maison</label>
                              				<input type="checkbox" name="type" value="appartement" id="type" /> <label for="type">Appartement</label>
                              				<input type="checkbox" name="type" value="autres" id="type" /> <label for="type">Autres</label><br>
                              
                                      <label for="surface">Surface (m<sup>2) : </label>
                                      <input type="text" name="" value=""><br>
                              
                                      <label for="ville">Dans quelle ville ? </label>
                                      <input type="text" name="ville" value="" maxlength="10"><br>
                              
                                      <label for="prix">Prix : </label>
                                      <input type="text" name="" value="">
                              
                                    </h2>
                                    <button type="rechercher" name="rechercher">Valider</button>
                                    </form>
                                  </section>
                              
                                </div>
                              
                              
                                     <script src="assets/js/jquery-1.10.2.min.js"></script>
                                     <script src="assets/js/jquery-migrate-1.2.1.min.js"></script>
                                     <script src="assets/jquery-ui-1.11.0.custom/jquery-ui.min.js"></script>
                                     <!--<script>
                                         /$("#last_name").autocomplete({
                                             minLength: 1,
                                             source: function(request, response) {
                                                 $.ajax({// call AJAX
                                                     url: '<?php /*echo $_SERVER['PHP_SELF']; */?>',
                                                     type: "GET",
                                                     dataType: 'json',
                                                     data: 'q=' + request.term, // défini le terme à rechercher
                                                     async: true,
                                                     cache: true,
                                                     success: function(ac_data) {
                                                         response(ac_data); // On va ajouter le résultat au tableau des résultats d'Autocomplete
                                                     },
                                                     error: function(msg) {
                                                         alert('Une erreur est survenue.');
                                                     }
                                                 });
                                             },
                                             select: function(event, ui) { // Assigniation de la valeur des champs au select
                                                 $('#last_name').val(ui.item.last_name);
                                                 $('#first_name').val(ui.item.first_name);
                                                 $('#email_addr').val(ui.item.email);
                                             }
                                         });
                                     </script>-->
                              <?php
                              include 'pied_de_page.php';
                              ?>
                              
                              
                              <!-- jQuery (necessary for Bootstrap's JavaScript plugins) -->
                              	<script src="https://code.jquery.com/jquery.js"></script>
                              <!-- Include all compiled plugins (below), or include individual files as needed -->
                              	<script src="js/bootstrap.min.js"></script>
                              	</body>
                              </html>
                              



                              Insertion :

                              <?php
                              session_start();
                              echo '<h2>Information pour le debug</h2>';
                              echo '<pre>';
                                echo "variable GET : "; print_r($_GET);
                                echo "variable POST : "; print_r($_POST);
                                echo "variable SESSION : "; print_r($_SESSION);
                                echo "variable FILES : "; print_r($_FILES);
                              echo '</pre>';
                              
                              include 'connexion.php';
                              if(isset($_POST['prix']))
                              {
                                $bdd = ouvrirBdd();
                                // ajout d'un bien
                                $req = "INSERT INTO `bien`(type,surface,ville,prix) VALUES (?,?,?,?)";
                                $res = $bdd->prepare ($req);
                                $res -> execute (array($_POST["type"], $_POST["surface"], $_POST["ville"],
                                          $_POST["prix"]));
                                /*$req = "INSERT INTO `personne`(`nom`,`prenom`,`login`,`email`) VALUES (?,?,?,?)";
                                $res = $bdd->prepare ($req);
                                $res -> execute (array($_POST["nom"], $_POST["prenom"], $_POST["prenom"],
                                                      $_POST["mail"]));*/
                              } ?>
                              



                              • Partager sur Facebook
                              • Partager sur Twitter
                                11 juin 2021 à 11:15:54

                                Qu'y a-t-il dans print_r($_POST); ?

                                Il n'y a que le prix qui manque ?

                                (note supplémentaire : pour la civilité, le name doit être identique entre les différents radios d'un même groupe)

                                -
                                Edité par Lamecarlate 11 juin 2021 à 11:17:20

                                • Partager sur Facebook
                                • Partager sur Twitter

                                Pas d'aide concernant le code par MP, le forum est là pour ça :)

                                  11 juin 2021 à 11:18:58

                                  dans print_r($_POST) :

                                  variable POST : Array
                                  (
                                      [nom] => 
                                      [prenom] => 
                                      [adresse] => 
                                      [téléphone] => 
                                      [mail] => 
                                      [type] => maison
                                      [ville] => Ankara
                                      [rechercher] =>

                                  -
                                  Edité par barscha 11 juin 2021 à 11:19:41

                                  • Partager sur Facebook
                                  • Partager sur Twitter
                                    11 juin 2021 à 11:26:40

                                    Ligne 48 du formulaire, le champ n'a pas de valeur pour name.

                                    • Partager sur Facebook
                                    • Partager sur Twitter
                                      11 juin 2021 à 11:33:48

                                      Tout est réglé desormais, merci encore
                                      • Partager sur Facebook
                                      • Partager sur Twitter

                                      [PDO] Insertion dans deux tables différentes

                                      × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                                      × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                                      • Editeur
                                      • Markdown