Partage
  • Partager sur Facebook
  • Partager sur Twitter

Clé étrangère via un formulaire

    24 janvier 2017 à 11:51:18

    Donc $donneeLieu / $donneeRaison est vide donc la requête SELECT n'a rien renvoyé OU tu n'as pas vérifié qu'elle contien quelque chose avant de l'utiliser ^^

    Donc il faut regarder le contenu des 2 variables avant d'aller plus loin.

    A toi de jouer.

    ++

    • Partager sur Facebook
    • Partager sur Twitter
      24 janvier 2017 à 13:10:16

      J'ai testé les variable en echo le même message d'erreur apparaît à chaque fois.

      Il me paraît bizarre que les variables ne contiennent rien vu qu'elles renvoient touts les éléments des listes déroulantes du formulaire.

      Ce qui me pose problème, c'est d'insérer l'id d'un élément d'une des listes déroulantes dans l'une des tables Raison ou Lieu_Acces en temps que clé étrangère. Mais on dirait que ces 2 variables ne sont que reconnu dans le formulaire lors de l'affichage de la liste déroulante.

      • Partager sur Facebook
      • Partager sur Twitter
        24 janvier 2017 à 13:39:07

        donne nous l'output de ceci lorsque tu valides le formulaire:

        <?php
            session_start();
            try {
                $bdd = new PDO('mysql:host=localhost;dbname=db_asgard;charset=utf8', 'login', 'mdp', array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));
                   
                // chargement des données
                echo '<br>1) Chargement donnee RAISON';
                $req = 'SELECT * FROM Raison';
                $stmt = $bdd->prepare($req);
                if (!$stmt->execute()) {
                    echo 'Erreur recup donnees RAISON';
                    exit();
                } else {
                    $donneesRaison = $stmt->fetchAll(PDO::FETCH_ASSOC); //tableau associatif
                    echo '<br>2) Chargement donnee LIEU';
                    $req = 'SELECT * FROM LieuAcces';
                    $stmt2 = $bdd->prepare($req);
                    if (!$stmt2->execute()) {
                        echo 'Erreur recup donnees LIEU';
                    exit();
                    } else {
                        $donneesLieu = $stmt2->fetchAll(PDO::FETCH_ASSOC); //tableau associatif
                        
                        echo '<br>donneeRaison:';
                        echo '<pre>'.print_r($donneeRaison,true).'</pre>';
                        echo '<br>donneeLieu:';
                        echo '<pre>'.print_r($donneeLieu,true).'</pre>';
                        exit;
                        echo '<br>3) avant if (!empty($_POST))';
                        if(!empty($_POST)) //Si l'utilisateur valide
                        {
                            echo '<br>4) Dans if (!empty($_POST))';
                            //htmlspecialchars pour l'aaffichage cela n'a rien a faire là
                            $nom_Beneficiaire = htmlspecialchars(trim($_POST['nom_Beneficiaire']));
                            $prenom_Beneficiaire = htmlspecialchars(trim($_POST['prenom_Beneficiaire']));
                            $adresse_Mail_Beneficiaire = htmlspecialchars(trim($_POST['adresse_Mail_Beneficiaire']));
                            $nom_Raison = htmlspecialchars(trim($_POST['nom_Raison']));
                            $date_Debut = htmlspecialchars(trim($_POST['date_Debut']));
                            $date_Fin = htmlspecialchars(trim($_POST['date_Fin']));
                            $commentaire = htmlspecialchars(trim($_POST['commentaire']));
                           
                            $req = 'INSERT INTO InfoDemande(id_Lieu, id_Raison, id_Utilisateur, nom_Beneficiaire, prenom_Beneficiaire, adresse_Mail_Beneficiaire,date_Debut,date_Fin,commentaire)';
                            $req .= ' VALUES ';
                            $req .= '(:id_Lieu, :id_Raison, :id_Utilisateur,:nom_Beneficiaire, :prenom_Beneficiaire, :adresse_Mail_Beneficiaire, :date_Debut, :date_Fin, :commentaire)';
                           
                            echo '<br>5) req: '.$req;
                            //prepoaration
                            $stmt3 = $bdd->prepare($req);
                            echo '<br>6) req preparee';
                            //Bind des valeurs
                            echo '<br>7) Bind des valeurs';
                            $stmt3->binValue('id_Lieu',$donnees['id_Lieu']);
                            $stmt3->binValue('id_Raison',$donnees['id_Raison']);
                            $stmt3->binValue('id_Utilisateur',$_SESSION['id_Utilisateur']);
                            $stmt3->binValue('nom_Beneficiaire',$nom_Beneficiaire);
                            $stmt3->binValue('prenom_Beneficiaire',$prenom_Beneficiaire);
                            $stmt3->binValue('adresse_Mail_Beneficiaire',$adresse_Mail_Beneficiaire);
                            $stmt3->binValue('date_Debut',$date_Debut);
                            $stmt3->binValue('date_Fin',$date_Fin);
                            $stmt3->binValue('commentaire',$commentaire);
                           
                            echo '<br>8) execute';
                            if (!$stmt3->execute()) {
                                echo '<br>9) execute KO';
                                echo 'Erreur insertion donnees';
                            } else {
                                echo '<br>9) execute OK';
                                echo 'Donnees inserees';
                                $_SESSION['nom_Beneficiaire']=$nom_Beneficiaire;
                                $_SESSION['prenom_Beneficiaire']=$prenom_Beneficiaire;
                                $_SESSION['adresse_Mail_Beneficiaire']=$adresse_Mail_Beneficiaire;
                                $_SESSION['date_Debut']=$date_Debut;
                                $_SESSION['date_Fin']=$date_Fin;
                                $_SESSION['commentaire']=$commentaire;
                                    
                                //Envoi mail
                                $destinataire = 'antoinebandarra@gmail.com';
                                $sujet = 'asgard';
                                $message = "test";
                                $entete  = 'From: '.$_SESSION['login_utilisateur']."\r\n".
                                        'Reply-To: '.$_SESSION['login_utilisateur']."\r\n".
                                        'X-Mailer: PHP/' . phpversion();
                                mail($destinataire, $sujet, $message, $entete);
                            }
                        }
                    }
                }
            } catch (PDOException $pdoE) {
                echo 'Erreur connexion BD';
            }
        ?> 
        <html>
            <head>
                <meta charset="utf-8"/>
                <link href="CSS/formulaire.css"/>
                <title> FORMULAIRE </title>
            </head>
                
            <body>
                <?php
                include('menu.php');
                ?>
                
                <form action="#" method="POST" class="formulaire" >
                    <h1>Formulaire</h1>
                
                        <HR width=200 align=left>
                
                    <h3>Information du bénéficiaire</h3>
                        <p>Nom: <input type="text" name="nom_Beneficiaire"> <br></p>
                        <p>Prenom: <input type="text" name="prenom_Beneficiaire"> <br></p>
                        <p>Adresse mail : <input type="text" name="adresse_Mail_Beneficiaire"> <br> <br></p>
                
                        <HR width=200 align=left>
                
                    <h3>informations générales</h3>
                    <p>Lieu d'accès: </p> <SELECT name="nom_Lieu" size="1">
                
                    <?php 
                    //A tester 
                    foreach ($donneesLieu AS $donneeLieu)
                    {
                    ?>
                            <option value="<?php echo $donneeLieu['id_Lieu']; ?>"> <?php echo $donneeLieu['id_Lieu']."- ".$donneeLieu['nom_Lieu']; ?> </option>
                    <?php 
                    }
                    ?>
                        </SELECT>
                
                    <p>Raison: </p> <SELECT name="nom_Raison" size="1">
                
                    <?php 
                    //A tester 
                        foreach ($donneesRaison AS $donneeRaison)
                    {
                    ?>
                            <option value="<?php echo $donneeRaison['id_Raison']; ?>"> <?php echo $donneeRaison['id_Raison']."- ".$donneeRaison['nom_Raison']; ?> </option>
                    <?php 
                    }
                    ?>
                        </SELECT>
                
                        <p>Date de début: <input type="text" name="date_Debut" placeholder="ex: 11/01/2017"> <br></p>
                        <p>Date de fin: <input type="text" name="date_Fin" placeholder="ex: 11/01/2017"> <br></p>
                        <p>Commentaire: <input type="text" name="commentaire"> <br></p>
                        <p><input type="submit" name="bouton" value="valider"> <br></p>
                </form>
            </body>
        </html>



        • Partager sur Facebook
        • Partager sur Twitter
          24 janvier 2017 à 14:16:58

          hummm le "s" dans le nom de variables stp...

          <?php
              session_start();
              try {
                  $bdd = new PDO('mysql:host=localhost;dbname=db_asgard;charset=utf8', 'login', 'mdp', array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));
                      
                  // chargement des données
                  echo '<br>1) Chargement donnee RAISON';
                  $req = 'SELECT * FROM Raison';
                  $stmt = $bdd->prepare($req);
                  if (!$stmt->execute()) {
                      echo 'Erreur recup donnees RAISON';
                      exit();
                  } else {
                      $donneesRaison = $stmt->fetchAll(PDO::FETCH_ASSOC); //tableau associatif
                      echo '<br>2) Chargement donnee LIEU';
                      $req = 'SELECT * FROM LieuAcces';
                      $stmt2 = $bdd->prepare($req);
                      if (!$stmt2->execute()) {
                          echo 'Erreur recup donnees LIEU';
                      exit();
                      } else {
                          $donneesLieu = $stmt2->fetchAll(PDO::FETCH_ASSOC); //tableau associatif
                           
                          echo '<br>donneesRaison :';
                          echo '<pre>'.print_r($donneesRaison ,true).'</pre>';
                          echo '<br>donneeLieu:';
                          echo '<pre>'.print_r($donneesLieu,true).'</pre>';
                          exit;
                          echo '<br>3) avant if (!empty($_POST))';
                          if(!empty($_POST)) //Si l'utilisateur valide
                          {
                              echo '<br>4) Dans if (!empty($_POST))';
                              //htmlspecialchars pour l'aaffichage cela n'a rien a faire là
                              $nom_Beneficiaire = htmlspecialchars(trim($_POST['nom_Beneficiaire']));
                              $prenom_Beneficiaire = htmlspecialchars(trim($_POST['prenom_Beneficiaire']));
                              $adresse_Mail_Beneficiaire = htmlspecialchars(trim($_POST['adresse_Mail_Beneficiaire']));
                              $nom_Raison = htmlspecialchars(trim($_POST['nom_Raison']));
                              $date_Debut = htmlspecialchars(trim($_POST['date_Debut']));
                              $date_Fin = htmlspecialchars(trim($_POST['date_Fin']));
                              $commentaire = htmlspecialchars(trim($_POST['commentaire']));
                              
                              $req = 'INSERT INTO InfoDemande(id_Lieu, id_Raison, id_Utilisateur, nom_Beneficiaire, prenom_Beneficiaire, adresse_Mail_Beneficiaire,date_Debut,date_Fin,commentaire)';
                              $req .= ' VALUES ';
                              $req .= '(:id_Lieu, :id_Raison, :id_Utilisateur,:nom_Beneficiaire, :prenom_Beneficiaire, :adresse_Mail_Beneficiaire, :date_Debut, :date_Fin, :commentaire)';
                              
                              echo '<br>5) req: '.$req;
                              //prepoaration
                              $stmt3 = $bdd->prepare($req);
                              echo '<br>6) req preparee';
                              //Bind des valeurs
                              echo '<br>7) Bind des valeurs';
                              $stmt3->binValue('id_Lieu',$donneesLieu['id_Lieu']);
                              $stmt3->binValue('id_Raison',$donneesRaison['id_Raison']);
                              $stmt3->binValue('id_Utilisateur',$_SESSION['id_Utilisateur']);
                              $stmt3->binValue('nom_Beneficiaire',$nom_Beneficiaire);
                              $stmt3->binValue('prenom_Beneficiaire',$prenom_Beneficiaire);
                              $stmt3->binValue('adresse_Mail_Beneficiaire',$adresse_Mail_Beneficiaire);
                              $stmt3->binValue('date_Debut',$date_Debut);
                              $stmt3->binValue('date_Fin',$date_Fin);
                              $stmt3->binValue('commentaire',$commentaire);
                              
                              echo '<br>8) execute';
                              if (!$stmt3->execute()) {
                                  echo '<br>9) execute KO';
                                  echo 'Erreur insertion donnees';
                              } else {
                                  echo '<br>9) execute OK';
                                  echo 'Donnees inserees';
                                  $_SESSION['nom_Beneficiaire']=$nom_Beneficiaire;
                                  $_SESSION['prenom_Beneficiaire']=$prenom_Beneficiaire;
                                  $_SESSION['adresse_Mail_Beneficiaire']=$adresse_Mail_Beneficiaire;
                                  $_SESSION['date_Debut']=$date_Debut;
                                  $_SESSION['date_Fin']=$date_Fin;
                                  $_SESSION['commentaire']=$commentaire;
                                       
                                  //Envoi mail
                                  $destinataire = 'antoinebandarra@gmail.com';
                                  $sujet = 'asgard';
                                  $message = "test";
                                  $entete  = 'From: '.$_SESSION['login_utilisateur']."\r\n".
                                          'Reply-To: '.$_SESSION['login_utilisateur']."\r\n".
                                          'X-Mailer: PHP/' . phpversion();
                                  mail($destinataire, $sujet, $message, $entete);
                              }
                          }
                      }
                  }
              } catch (PDOException $pdoE) {
                  echo 'Erreur connexion BD';
              }
          ?> 
          <html>
              <head>
                  <meta charset="utf-8"/>
                  <link href="CSS/formulaire.css"/>
                  <title> FORMULAIRE </title>
              </head>
                   
              <body>
                  <?php
                  include('menu.php');
                  ?>
                   
                  <form action="#" method="POST" class="formulaire" >
                      <h1>Formulaire</h1>
                   
                          <HR width=200 align=left>
                   
                      <h3>Information du bénéficiaire</h3>
                          <p>Nom: <input type="text" name="nom_Beneficiaire"> <br></p>
                          <p>Prenom: <input type="text" name="prenom_Beneficiaire"> <br></p>
                          <p>Adresse mail : <input type="text" name="adresse_Mail_Beneficiaire"> <br> <br></p>
                   
                          <HR width=200 align=left>
                   
                      <h3>informations générales</h3>
                      <p>Lieu d'accès: </p> <SELECT name="nom_Lieu" size="1">
                   
                      <?php 
                      //A tester 
                      foreach ($donneesLieu AS $donneeLieu)
                      {
                      ?>
                              <option value="<?php echo $donneeLieu['id_Lieu']; ?>"> <?php echo $donneeLieu['id_Lieu']."- ".$donneeLieu['nom_Lieu']; ?> </option>
                      <?php 
                      }
                      ?>
                          </SELECT>
                   
                      <p>Raison: </p> <SELECT name="nom_Raison" size="1">
                   
                      <?php 
                      //A tester 
                          foreach ($donneesRaison AS $donneeRaison)
                      {
                      ?>
                              <option value="<?php echo $donneeRaison['id_Raison']; ?>"> <?php echo $donneeRaison['id_Raison']."- ".$donneeRaison['nom_Raison']; ?> </option>
                      <?php 
                      }
                      ?>
                          </SELECT>
                   
                          <p>Date de début: <input type="text" name="date_Debut" placeholder="ex: 11/01/2017"> <br></p>
                          <p>Date de fin: <input type="text" name="date_Fin" placeholder="ex: 11/01/2017"> <br></p>
                          <p>Commentaire: <input type="text" name="commentaire"> <br></p>
                          <p><input type="submit" name="bouton" value="valider"> <br></p>
                  </form>
              </body>
          </html>

          j'ai corrigé

          • Partager sur Facebook
          • Partager sur Twitter
            24 janvier 2017 à 14:20:01

            Ok, touts les éléments de mes 2 tables se sont affichés sous forme de tableau
            • Partager sur Facebook
            • Partager sur Twitter
              24 janvier 2017 à 14:28:10

              Toujours pareil mais avec le formulaire qui s'affiche en dessous
              • Partager sur Facebook
              • Partager sur Twitter
                24 janvier 2017 à 14:30:19

                avec le 's' corrigé il te donne des "undefined index" ??

                Lesquels stp, il faut les mettre car 2 message pour avoir les erreurs ^^ c'est lourd :p

                ++

                • Partager sur Facebook
                • Partager sur Twitter
                  24 janvier 2017 à 14:31:47

                  Non les messages ne s'affichent plus, c'est un tableau avec toutes les valeurs de ma table qui s'affiche à la place
                  • Partager sur Facebook
                  • Partager sur Twitter
                    24 janvier 2017 à 14:32:37

                    je t'ai demandé de virer le(s) exit(s), surtout celui ligne 28 ;)

                    ++

                    • Partager sur Facebook
                    • Partager sur Twitter
                      24 janvier 2017 à 14:50:03

                      et donc le dernier numéro de log est le 8 toujours...
                      • Partager sur Facebook
                      • Partager sur Twitter
                        24 janvier 2017 à 15:02:42

                        affiche les variables qui sont avant le tag 8 pour voir si une d'elle fait planter, là je ne peux pas trop t'aider sinon.

                        ++

                        • Partager sur Facebook
                        • Partager sur Twitter
                          24 janvier 2017 à 15:14:31

                          Attendez, est-ce que par hasard le code de 13 messages plus haut aurait été copié-collé, et du coup les instructions pour afficher les messages d'erreur n'y sont évidemment pas ?

                          -
                          Edité par Ymox 24 janvier 2017 à 15:15:12

                          • Partager sur Facebook
                          • Partager sur Twitter
                            24 janvier 2017 à 15:17:00

                            ^^ normalement il devrait avoir le code avec les print_r + correction des 's' si j'ai tout suivi... enfin j'espère :p

                            ++

                            • Partager sur Facebook
                            • Partager sur Twitter
                              24 janvier 2017 à 15:29:00

                              Non j'ai repris mon code actuel et j'ai modifié les éléments que christouphe vient de modifier
                              • Partager sur Facebook
                              • Partager sur Twitter

                              Clé étrangère via un formulaire

                              × 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