Menu

Requete de remplissage de deux tables ensembles

Messages postés
25
Date d'inscription
mercredi 10 février 2016
Dernière intervention
19 novembre 2018
-
Bonjour, j'ai un petit soucis avec mes requêtes d'insertion de données:
En fait je développe une application dans laquelle j'ai 6 tables (Formation, Candidat, Inscrire...) que l'administrateur doit remplir lui-même normalement. Cependant je veux donner la chance aux candidats à la "formation" de pouvoir "s'inscrire" directement eux-mêmes sur le site en cliquant sur l'option "s'inscrire" qui se trouve sur les différentes formations.

A cet effet, j'ai sélectionné des éléments de ma table "Formation" que j'ai affichés sur la page liste_formations.php visible par tous visiteur du site.
Sur cette page j'ai un bouton submit(S'inscrire) qui doit diriger le candidat avec l'id de la formation qu'il aura choisie sur une page ou il doit remplir un formulaire. Après le remplissage de ce formulaire, le candidat doit valider ses informations (idC, nomC, prenomC, date_de_naisance, lieunaisC) qui doivent être enregistrées normalement avec l'id de la formation.
Cependant, seules les informations relatives à la table "candidat" doivent être enregistrées dans la table "candidat", et, je veux que l'identifiant "idF" de la table formation(idF, libelle, outil, prix) aille directement dans la table intermédiaire entre "Candidat" et "Formation" qui est la table Inscrire(pk_idInscrire, fk_idC#, fk_idF#, dateprevue). De telle sorte qu'après la validation du submit par le candidat, la table "Candidat" reçoive son occurrence, et, la table intermédiaire "Inscrire" reçoive elle aussi son occurrence. Comment faire?

Voici mes codes:
1) la page "liste_formations.php"


<?php include('header.php'); ?>
<?php include('config.php'); ?>

<div class="container">
<?php 
  error_reporting(E_ALL);
  ini_set('display_errors', TRUE);
  ini_set('display_startup_errors', TRUE);

   $page = isset($_GET['page']) ? $_GET['page'] : 1;
   $page_offset = ($page - 1) * 5;
   $total ='';
   $pagination ='';

   $total_element = $bdd->query("SELECT * from formation");
   $total = $total_element->rowCount(); /* or die (print_r($total_element->errorInfo())) */
   $pagination = $total/5;
    
      $req=$bdd->query("select * from formation ORDER BY idF DESC LIMIT $page_offset, 5 ") or die(print_r($bdd->errorInfo()));
                  
    while($donnees = $req->fetch())
    { 
     echo'
        <div class="row">
      <article class="col-md-6 ajuste">
       <div class="panel panel-default">
        <div class="panel-heading"><h1>NOS FORMATIONS</h1></div>
            <div class="panel-body">
                            <p>
                                Numero: '.$donnees['idF'].'</br>Libelle: '.$donnees['libelle'].'</br>Outil: '.$donnees['outil'].'</br>Prix: '.$donnees['prix'].'</br>Lieu de formation: '.$donnees['lieuF'].'</br>Durée: '.$donnees['dureeF'].'</br>Connaissances: '.$donnees['acquisition'].'
                </p>
           <a href="inscription_pour_formation.php?id='.$donnees['idF'].'"> S\'inscrire </a> 
            </div>    
       </div>
      </article>
     </div>';
    } 
        $req->closeCursor(); 
        
     echo '<p align="center">Page : '; //Pour l'affichage, on centre la liste des pages
      for($i=1; $i<=$pagination; $i++) //On fait notre boucle
       {
        if($i==$page) //Si il s'agit de la page actuelle...
         {
          echo ' [ '.$i.' ] '; 
         } 
         else //Sinon...
          {
           echo ' <a href="index.php?page='.$i.'">'.$i.'</a> ';
          }
       }
      echo '</p>';             
  ?>
</div>
<?php include('footer.php'); ?>


2) La page "inscription_pour_formation.php"

 
 <?php 
error_reporting(E_ALL);
ini_set('display_errors', TRUE);
ini_set('display_startup_errors', TRUE);
  include('header.php');
  session_start();
   if(isset($_GET["id"]))
   {
    $id=$_GET["id"];
       $_SESSION['id']=$id;
   }
  $new_id=$_SESSION['id'];
 ?>
   <form method="POST" action="">
       <div class="container">    
     <div class="row">
      <article class="col-md-12 ajuste">
       <div class="panel panel-default">
            <div class="panel-heading"><h1><h2>Resultat enregistrement</h2></h1></div>
        <div class="panel-body">


         <?php 
          include('config.php');     
           echo '<h2><center>La formation choisie est le Numéro: '.$new_id.'</h2></center>';
          $req= $bdd -> query("select * from formation where idF=$new_id") or die(print_r($bdd->errorInfo()));
          $donnees= $req ->fetch();
         ?>
         <?php
         if (isset($_POST['valider']))
          {
           
           $nomC=$_POST['nomC'];
           $prenomC=$_POST['prenomC'];
           $journaisC=$_POST['journaisC'];
           $moisnaisC=$_POST['moisnaisC'];
           $anneenaisC=$_POST['anneenaisC'];
           $lieunaisC=$_POST['lieunaisC'];
           $villeC=$_POST['villeC'];
           $quartierC=$_POST['quartierC'];
           $emailC=$_POST['emailC'];
           $cellC=$_POST['cellC'];
           $id=$_SESSION['id'];
           
           
           echo "<h3><u> VERIFICATION AVANT ENREGISTREMENT </u></h3></br>";
           echo '<div class="col-md-4"><h3>Nom </br> Prénom </br>Date de naissance: </br>Lieu de naissance: </br>Ville </br>Quartier </br>Email </br>Cell</br>Formation numero:</div></h3>
           <h3>
                 <div class="col-md-4">'.$nomC.' </br>'.$prenomC.' </br>'.$journaisC.'-'.$moisnaisC.'-'.$anneenaisC.'</br>'.$lieunaisC.'</br> '.$villeC.' </br>'.$quartierC.'</br>'.$emailC.' </br>'.$cellC.'</br>'.$id.'</div> </h3>
              
              <h4><div class="col-md-4"> Veuillez enregistrer vos informations sans soucis.
           </br></br> Nous nous atelerons à vous informer dans un bref délais! </br></br> Nous nous atelerons à vous informer dans un bref délais!</di></h4> </br>
           
           <form method="POST" action="saveCandidats.php">
            <input type="hidden" name="nomC2" value="'.$nomC.'" />
            <input type="hidden" name="prenomC2" value="'.$prenomC.'" />
            <input type="hidden" name="journaisC2" value="'.$journaisC.'" />
            <input type="hidden" name="moisnaisC2" value="'.$moisnaisC.'" />
            <input type="hidden" name="anneenaisC2" value="'.$anneenaisC.'" />
            <input type="hidden" name="lieunaisC2" value="'.$lieunaisC.'" />
            <input type="hidden" name="villeC2" value="'.$villeC.'" />
            <input type="hidden" name="quartierC2" value="'.$quartierC.'" />
            <input type="hidden" name="emailC2" value="'.$emailC.'" />
            <input type="hidden" name="cellC2" value="'.$cellC.'" />
            <input type="hidden" name="id2" value="'.$id.'" /></br>
            <input class="annuler ch1" type="submit" name="annuler" value="Annuler" />
            <input class="ch2" type="submit" name="confirmer" value="Confirmer" />
           </form>';
           
          } 
           ?>
            
           <?php 
            if(isset($_POST['confirmer']))
            {   
             $nomC2=isset($_POST['nomC2']) ? $_POST['nomC2'] : '' ;
             $prenomC2=isset($_POST['prenomC2']) ? $_POST['prenomC2'] : '';
             $journaisC2=isset($_POST['journaisC2']) ? $_POST['journaisC2'] : '';
             $moisnaisC2=isset($_POST['moisnaisC2']) ? $_POST['moisnaisC2'] : '' ;
             $anneenaisC2=isset($_POST['anneenaisC2']) ? $_POST['anneenaisC2'] : '';
             $lieunaisC2=isset($_POST['lieunaisC2']) ? $_POST['lieunaisC2'] : '';
             $villeC2=isset($_POST['villeC2']) ? $_POST['villeC2'] : '' ;
             $quartierC2=isset($_POST['quartierC2']) ? $_POST['quartierC2'] : '';
             $emailC2=isset($_POST['emailC2']) ? $_POST['emailC2'] : '';
             $cellC2=isset($_POST['cellC2']) ? $_POST['cellC2'] : '';
             $id2=isset($_POST['id2']) ? $_POST['id2'] : '';
             
             $req1=$bdd->prepare('INSERT INTO candidat(nomC, prenomC, journaisC, moisnaisC, anneenaisC, lieunaisC, villeC, quartierC, emailC, cellC) VALUES(:nomC2, :prenomC2, :journaisC2, :moisnaisC2, :anneenaisC2, :lieunaisC2, :villeC2, :quartierC2, :emailC2, :cellC2)');
             $req1->execute(array(
                  ':nomC2'=>$nomC2,
                  ':prenomC2'=>$prenomC2,
                  ':journaisC2'=>$journaisC2,
                  ':moisnaisC2'=>$moisnaisC2,
                  ':anneenaisC2'=>$anneenaisC2,
                  ':lieunaisC2'=>$lieunaisC2,
                  ':villeC2'=>$villeC2,
                  ':quartierC2'=>$quartierC2,
                  ':emailC2'=>$emailC2,
                  ':cellC2'=>$cellC2)) or die (print_r($req->errorInfo()));
                  $req->closeCursor();
                  
           $req2 = $bdd -> query('SELECT (jourF, moisF, anneeF) FROM inscrire WHERE (jourF=:jourF2, moisF=:moisF2, anneeF=:anneeF2) AND idF = :id');
             
             $idC2=isset($_POST['idC2']) ? $_POST['idC2'] : '' ;
             $id2=isset($_POST['id2']) ? $_POST['id2'] : '';
             $jourF2=isset($_POST['jourF2']) ? $_POST['jourF2'] : '';
             $moisF2=isset($_POST['moisF2']) ? $_POST['moisF2'] : '';
             $anneeF2=isset($_POST['anneeF2']) ? $_POST['anneeF2'] : ''; 
             
             $req3=$bdd->prepare('INSERT INTO inscrire(idC, id, jourF, moisF, anneeF) VALUES(:idC2, :id2, :jourF2, :moisF2, :anneeF2)');
             $req3->execute(array(':idC2'=>$_POST['idC2'], 
                  ':id2'=>$new_id,
                  ':jourF2'=>$_POST['jourF2'],
                  ':moisF2'=>$_POST['moisF2'],
                  ':anneeF2'=>$_POST['anneeF2'])) or die (print_r($req->errorInfo()));
                  $req->closeCursor();
                  echo'<h3> Inscription faite avec succès!</h3> </br><h3><a href="liste_formations.php">Faire un autre enregistrement!</a></h3>';
            
            }else if(isset($_POST['annuler']))
              {
               header('Location:index.php');
              }
           
             ?>
                    </div>
       </div>
      </article>
     </div>
                </div>  
    <div class="container">    
     <div class="row">
      <article class="col-md-12 ajuste">
       <div class="panel panel-default">
            <div class="panel-heading"><h1><h2>Donnez vos références pour la validation de votre reservation!</h2></h1></div>
        <div class="panel-body">
         <div class="col-md-6">
             <div class="row">
              <div class="col-md-4">
               <label>nom</label> </br><br/>
            <label>Prénom</label> </br><br/>
            <label>Date de naissance</label> </br><br/>
            <label>Lieu de naissance</label> </br><br/>
            <label>Ville</label> </br><br/>
            <label>Quartier</label> </br><br/>
            <label>Email</label> </br><br/>
            <label>Cell</label> <br/><br/>
           </div>
           <div class="col-md-8">
               <input type="text" name="nomC" placeholder="Votre nom" required size="40"/> <br/><br/>
            <input type="text" name="prenomC" placeholder="Votre nom" required size="40"/> <br/><br/>
             <select name="journaisC">
              <option name="journaisC">1</option>
              <option name="journaisC">2</option>
              <option name="journaisC">3</option>
              <option name="journaisC">4</option>
              <option>05</option> <option>06</option> <option>07</option> <option>08</option> <option>09</option>
              <option>10</option> <option>11</option> <option>12</option> <option>13</option> <option>14</option> <option>15</option>
              <option>16</option> <option>17</option> <option>18</option> <option>19</option> <option>20</option> <option>21</option>
              <option>22</option> <option>23</option> <option>24</option> <option>25</option> <option>26</option> <option>27</option>
              <option>28</option> <option>29</option> <option>30</option> <option>31</option>
             </select>
             <select name="moisnaisC">
              <option name="moisnaisC">  1  </option>
              <option name="moisnaisC">   2   </option>
              <option name="moisnaisC">   3   </option>
              <option name="moisnaisC">   4   </option>
              <option name="moisnaisC">   5   </option>
              <option name="moisnaisC">  6  </option>
              <option name="moisnaisC">   7   </option>
              <option name="moisnaisC">   8   </option>
              <option name="moisnaisC">   9   </option>
              <option name="moisnaisC">   10   </option>
              <option name="moisnaisC">  11  </option>
              <option name="moisnaisC">   12   </option>
             </select>
             <select name="anneenaisC">
              <option name="anneenaisC">   2010  </option>
              <option name="anneenaisC">   2009   </option>
              <option name="anneenaisC">   2008  </option>
              <option name="anneenaisC">   2007  </option>
              <option name="anneenaisC">   2006  </option>
              <option name="anneenaisC">   2005  </option>
              <option name="anneenaisC">   2004   </option>
              <option name="anneenaisC">   2003  </option>
              <option name="anneenaisC">   2002  </option>
              <option name="anneenaisC">   2001  </option>
              <option name="anneenaisC">   2000  </option>
              <option name="anneenaisC">   1999  </option>
              <option name="anneenaisC">   1998  </option>
              <option name="anneenaisC">   1997  </option>
              <option name="anneenaisC">   1996   </option>
              <option name="anneenaisC">   1995  </option>
              <option name="anneenaisC">   1994  </option>
              <option name="anneenaisC">   1993  </option>
              <option name="anneenaisC">   1992  </option>
              <option name="anneenaisC">   1991   </option>
              <option name="anneenaisC">   1990   </option>
              <option name="anneenaisC">   1989  </option>
              <option name="anneenaisC">   1988  </option>
              <option name="anneenaisC">   1987  </option>
              <option name="anneenaisC">   1986  </option>
              <option name="anneenaisC">   1985   </option>
              <option name="anneenaisC">   1984  </option>
              <option name="anneenaisC">   1983  </option>
              <option name="anneenaisC">   1982  </option>
              <option name="anneenaisC">   1981  </option>
              <option name="anneenaisC">   1980  </option>
              <option name="anneenaisC">   1970  </option>
              <option name="anneenaisC">   1960  </option>
              <option name="anneenaisC">   1950  </option>
              <option name="anneenaisC">   1949   </option>
              <option name="anneenaisC">   1948  </option>
              <option name="anneenaisC">   1947  </option>
              <option name="anneenaisC">   1946  </option>
              <option name="anneenaisC">   1945  </option>
              <option name="anneenaisC">   1944   </option>
              <option name="anneenaisC">   1943  </option>
              <option name="anneenaisC">   1942  </option>
              <option name="anneenaisC">   1941  </option>
              <option name="anneenaisC">   1940  </option>
             </select>
             </br><br/>
                 
                 <input type="text" name="lieunaisC" placeholder="Lieu de naissance" required size="40"/> <br/><br/>
                 <input type="text" name="villeC" placeholder="Ville actuelle" required size="40"/> <br/><br/>
                 <input type="text" name="quartierC" placeholder="Quartier" required size="40"/> <br/><br/>
                 <input type="email" name="emailC" placeholder="Email" required size="40"/> <br/><br/>
                 <input type="text" name="cellC" placeholder="contact" required size="40"/> <br/><br/>
                 <input type="hidden" name="id" value="id"size="20"/>
                <input type="submit" name="valider" value="valider" align="right"/>
                </div>
          </div>
         </div>

                 <div class="col-md-6">
            <?php echo 'Numéro: '.$id=$donnees['idF']."</br><br/><br/>";?>
            <?php echo 'Libelle: '. $donnees['libelle']."</br><br/><br/>" ;?>
            <?php echo 'Outil: '. $donnees['outil']."</br><br/><br/>" ;?>
            <?php echo 'Prix: '.$donnees['prix'] ."</br><br/><br/>";?> 
            <?php echo 'Lieu : '.$donnees['lieuF'] ."</br><br/><br/>" ;?>
            <?php echo 'Durée: '.$donnees['dureeF']."</br><br/><br/>" ;?>
            <?php echo 'Connaissance: '.$donnees['acquisition']."</br><br/><br/>" ;?>
            <?php '<a href="operation_script.php?id='.$donnees['idF'].'>Suivant</a> ';?>
                 </div>
        </div>
       </div>
      </article>
     </div>
                </div>     
   </form>
            <?php include('footer.php'); ?>
       <script src="js/jquery.js"> </script>
    <script src="js/bootstrap.min.js"></script>
   </body>
 </html>

Afficher la suite 

Votre réponse

3 réponses

Messages postés
23628
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
16 décembre 2018
0
Merci
Bonjour,

Je ne suis pas certain de comprendre quel est ton souci....

Tu insères les données dans la première table.
Tu récupères l' ID auto-incrémenté nouvellement généré lors de l'insertion si besoin
Puis Tu insères les données dans la secondes tables. (dont l'ID )... etc....

Pour récupérer la valeur de l'id nouvellement créé lors de l'insertion
http://php.net/manual/fr/pdo.lastinsertid.php


Au passage, je t'invite fortement à lire ET à appliquer ce qui se trouve dans ces deux liens :
http://www.commentcamarche.net/faq/46512-pdo-gerer-les-erreurs

http://www.commentcamarche.net/faq/48399-php-gestion-des-erreurs-debogage-et-ecriture-du-code

.


Busima
Messages postés
25
Date d'inscription
mercredi 10 février 2016
Dernière intervention
19 novembre 2018
-
Merci pour le rappel des codes pour la détection des erreurs.

Non Jordane:
1) premièrement je fais l'affichage de toutes mes formations sur une page.
2) Deuxièmement je sélectionne la formation que je veux faire et je remplis mon formulaire.
3)Troisièmement j'insère les données de mon formulaire dans la première table avec $rq1.
4) Quatrièmement je veux aussi insérer l'id de la formation choisie qui était dans le paramètre GET dans la table intermédiaire Inscrire.
jordane45
Messages postés
23628
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
16 décembre 2018
-
Pourquoi dis tu non ?
Je ne comprend pas où se trouve ton souci......
Busima
Messages postés
25
Date d'inscription
mercredi 10 février 2016
Dernière intervention
19 novembre 2018
-
C'est pour mieux vous éclaircir ce que je veux que je dis non.

1) premièrement je fais l'affichage de toutes mes formations sur une page. ça c'est ok!
2) Deuxièmement je sélectionne la formation que je veux faire et je remplis mon formulaire. ça aussi c'est ok!

Voici maintenant ci-dessous ce que je veux:

3) Insérer les données de mon formulaire dans la première table avec $rq1 = $bdd->...
Ensuite, insérer l'id de la formation choisie qui était dans le paramètre issu de la variable globale GET dans la table intermédiaire Inscrire avec $req3.
Et $req2 doit sélectionner la dateprevue pour la formation dans la table intermédiaire "inscrire" pour faire une liaison d'insértion avec idC dans la table "inscrire"
jordane45
Messages postés
23628
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
16 décembre 2018
-
J'ai bien compris ....
maintenant ce que j'aimerai que tu fasses (car je ne ferai pas le code à ta place....)
c'est de nous poster UNIQUEMENT le code de tes requêtes ( avec la récupération des différentes données qui vont avec bien entendu ).
Et que tu expliques, si tu rencontres des difficultés, les erreurs que tu as.

NB: Concernant l'écriture de ton code et la récupération "PROPRE" des variables il serait fort souhaitable que tu t'inspires des liens que je t'ai donné.
Busima
Messages postés
25
Date d'inscription
mercredi 10 février 2016
Dernière intervention
19 novembre 2018
-
Ok première requête:

$req1=$bdd->prepare('INSERT INTO candidat(nomC, prenomC, journaisC, moisnaisC, anneenaisC, lieunaisC, villeC, quartierC, emailC, cellC) VALUES(:nomC2, :prenomC2, :journaisC2, :moisnaisC2, :anneenaisC2, :lieunaisC2, :villeC2, :quartierC2, :emailC2, :cellC2)');
    $req1->execute(array(
                  ':nomC2'=>$nomC2,
                  ':prenomC2'=>$prenomC2,
                  ':journaisC2'=>$journaisC2,
                  ':moisnaisC2'=>$moisnaisC2,
                  ':anneenaisC2'=>$anneenaisC2,
                  ':lieunaisC2'=>$lieunaisC2,
                  ':villeC2'=>$villeC2,
                  ':quartierC2'=>$quartierC2,
                  ':emailC2'=>$emailC2,
                  ':cellC2'=>$cellC2)) or die (print_r($req->errorInfo()));
                  $req->closeCursor();
           


Deuxième requête
       
           $req2 = $bdd -> query('SELECT (jourF, moisF, anneeF) FROM inscrire WHERE (jourF=:jourF2, moisF=:moisF2, anneeF=:anneeF2) AND idF = :id');
             
             $idC2=isset($_POST['idC2']) ? $_POST['idC2'] : '' ;
             $id2=isset($_POST['id2']) ? $_POST['id2'] : '';
             $jourF2=isset($_POST['jourF2']) ? $_POST['jourF2'] : '';
             $moisF2=isset($_POST['moisF2']) ? $_POST['moisF2'] : '';
             $anneeF2=isset($_POST['anneeF2']) ? $_POST['anneeF2'] : ''; 
             
             


Troisième Requete
$req3=$bdd->prepare('INSERT INTO inscrire(idC, id, jourF, moisF, anneeF) VALUES(:idC2, :id2, :jourF2, :moisF2, :anneeF2)');
             $req3->execute(array(':idC2'=>$_POST['idC2'], 
                  ':id2'=>$new_id,
                  ':jourF2'=>$_POST['jourF2'],
                  ':moisF2'=>$_POST['moisF2'],
                  ':anneeF2'=>$_POST['anneeF2'])) or die (print_r($req->errorInfo()));
                  $req->closeCursor();
                  echo'<h3> Inscription faite avec succès!</h3> </br><h3><a href="liste_formations.php">Faire un autre enregistrement!</a></h3>';
            
            }else if(isset($_POST['annuler']))
              {
               header('Location:index.php');
              }


Excusez-moi, voici les messages d'erreur qu'on m'affiche et que j'ai oublié de mentionné dans mon premier post:

1 - Warning: PDO::query(): SQLSTATE[42000]: Syntax error or access violation: 1064 Erreur de syntaxe près de ':jourF2, moisF=:moisF2, anneeF=:anneeF2) AND idF = :id' à la ligne 1 in C:\wamp\www\gabarit6\application formation\inscription_pour_formation.php on line 106

2 - Undefined index: idC2 in C:\wamp\www\gabarit6\application formation\inscription_pour_formation.php on line 115

3 - Undefined index: jourF2 in C:\wamp\www\gabarit6\application formation\inscription_pour_formation.php on line 117

4 - Undefined index: moisF2 in C:\wamp\www\gabarit6\application formation\inscription_pour_formation.php on line 118

5 - Undefined index: anneeF2 in C:\wamp\www\gabarit6\application formation\inscription_pour_formation.php on line 119

6 - PDOStatement::execute(): SQLSTATE[42S22]: Column not found: 1054 Champ 'id' inconnu dans field list in C:\wamp\www\gabarit6\application formation\inscription_pour_formation.php on line 119
Commenter la réponse de jordane45
Messages postés
25
Date d'inscription
mercredi 10 février 2016
Dernière intervention
19 novembre 2018
0
Merci
Bonsoir, y a quelqu'un pour m'aider?
Commenter la réponse de Busima
Messages postés
23628
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
16 décembre 2018
0
Merci
Bonjour,

Tu as plusieurs erreurs...
Déjà au niveau de ta requête


1 - Warning: PDO::query(): SQLSTATE[42000]: Syntax error or access violation: 1064 Erreur de syntaxe près de ':jourF2, moisF=:moisF2, anneeF=:anneeF2) AND idF = :id' à la ligne 1 in C:\wamp\www\gabarit6\application formation\inscription_pour_formation.php on line 106

WHERE (jourF=:jourF2, moisF=:moisF2, anneeF=:anneeF2) AND idF = :id'

TU dois mettre des AND (ou des OR) entre CHAQUE condition
par exemple
WHERE jourF=:jourF2 AND moisF=:moisF2 AND anneeF=:anneeF2  AND idF = :id'




6 - PDOStatement::execute(): SQLSTATE[42S22]: Column not found: 1054 Champ 'id' inconnu dans field list in C:\wamp\www\gabarit6\application formation\inscription_pour_formation.php on line 119

Le message est clair... le champ 'id' n'existe pas dans ta table
je suppose dans cette requête
 'INSERT INTO inscrire(idC, id, jourF, moisF, anneeF) 


Pour les autres erreurs... le souci ne se poserait pas si tu avais appliqué le contenu des lien que je t'avais donné.
Je te les redonne :

Au passage, je t'invite fortement à lire ET à appliquer ce qui se trouve dans ces deux liens :
http://www.commentcamarche.net/faq/46512-pdo-gerer-les-erreurs

http://www.commentcamarche.net/faq/48399-php-gestion-des-erreurs-debogage-et-ecriture-du-code

Ou bien ce n'est pas possible de remplir 2 tables ensemble avec un seul submit de validation?
jordane45
Messages postés
23628
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
16 décembre 2018
-
Bien sûr que si tu peux remplir deux tables lors d'un même submit.... meme 50 si il faut...
Il faut juste correctement écrire son code ... et ses requêtes SQL.
As tu changé le nom du champ dans ta requête ?
Je pense que non vu que tu es subtilement venu faire un "up" histoire qu'on te donne la solution...

Je rappel qu'on ne fera pas le taff à ta place... surtout lorsqu'on t'a déjà donné les réponses;

Je rappel également que la requête concernée est la suivante
INSERT INTO inscrire(idC, id, jourF, moisF, anneeF) VALUES(:idC2, :id2, :jourF2, :moisF2, :anneeF2)

requête qui ne contient que 5 champs.... facile de trouver celui qui ne va pas non ??Oo
Busima
Messages postés
25
Date d'inscription
mercredi 10 février 2016
Dernière intervention
19 novembre 2018
-
Salut Grand Jordane45. Ne m'en voulez pas si j'ai envie d'apprendre. On trébuche la plus part du temps lorsqu'on n'a jamais fait quelque chose et on a toujours besoin de plus petit ou de plus grand que soi.
Je veux juste savoir comment ça marche pour ne plus reposer les mêmes questions prochainement.
J'ai fais l'amélioration et je pense que je suis sur le chemin cette fois-ci car le nouveau message d'érreur concerne maintenant la contrainte d’intégrité:

$sql = 'INSERT INTO inscrire(idC, idF, jourF, moisF, anneeF) VALUES(:idC2, :id2, :jourF2, :moisF2, :anneeF2)';
$datas = array(':idC2'=>$idC2,
':id2'=>$id2,
':jourF2'=>$jourF2,
':moisF2'=>$moisF2,
':anneeF2'=>$anneeF2);

Ci-dessous le message d'erreur lorsque j'exécute la requête:

Erreur ! SQLSTATE[23000]: Integrity constraint violation: 1452 Cannot add or update a child row: a foreign key constraint fails (`formation`.`inscrire`, CONSTRAINT `fk_idC` FOREIGN KEY (`idC`) REFERENCES `candidat` (`idC`) ON DELETE SET NULL ON UPDATE CASCADE) Les datas :

jordane45
Messages postés
23628
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
16 décembre 2018
-
Fais donc un print_r de $datas et regarde si les valeurs sont bonnes....
J'ai comme l'impression que ta variable $idC2 est vide.... et pour cause... rien dans ton form ne correspond à ce nom de champ...
Bonjour Jordane,
J'ai enfin réussi à résoudre mon problème:
J'ai reformulé ma requête de selection des formations en faisant une jointure sur les 2 tables (formation-inscrire) pour pouvoir récupérer la date(jourF, moisF, anneeF) et l'heure, ensuite j'ai récupéré l'identifiant idC de candidat avec lastInsertId() et j'ai procédé par la méthode GET pour envoyer ces paramètres en question
(date et heure) et les récupérer sur la page de destination tout comme pour le id=idF. Et l'insertion se fait maintenant sans problème.
Grand merci à vous!
Commenter la réponse de jordane45