Comment enregistrè dans une autre table de ma Base de donnèes...

Résolu/Fermé
Signaler
Messages postés
4
Date d'inscription
mardi 12 janvier 2016
Statut
Membre
Dernière intervention
12 janvier 2016
-
Messages postés
34693
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
22 janvier 2022
-
Bonjour,
Apres avoir selectionè des information d'une table de la base de donnees apartir d'un formulaire j'aimerai enregistre les donnèes selectionnèes dans une autre table de la meme base de donnees.
En faite je veux mettre en place une application de gestion des notes des ètudiant.
j'ai creer deux tables Etudiant et matiere et j'ai mis des enregistrements maintenant j'ai fait un formulaire qui affiche les champs Num etudiant, etudiant, num matiere, matiere et la note., je selectionne num etudiant, etudiant, num matiere, matiere et je saisie la note. mais des que je click sur valider je me rend compte que rien n'est enregistré et j'ai beau cherché mais toujours rien.
Merci d'avance pour votre aide
voici mes code
j'utilise aussi PDO
<!--
 function verifyNote()
 {
  var mynote = parseFloat(document.getElementById('idnote').value);
  if ((mynote >= 0) && (mynote <=20))
   document.myform.submit();
  else
   alert('la note saisie est incorrecte');
 }
//-->
</script>

<?php
 include("connect_db.php");
 include("note_moyenne.php"); 
?>

<body>

 <h1>Formulaire de saisie de notes des etudiants</h1>
 <form name="form1" method="POST" action="form1.php">
  <fieldset>
               <legend>formulaire de saisie de notes</legend> 
 <table>
  <tr><td>Numero Etudiant</td><td>
   <select name="idetudiant[]" id="idetudiant">
<?php
 
 $reponse = $bdd->query('SELECT ID_etudiant FROM Etudiant');
 
  while ($donnees = $reponse->fetch())
{
   

?>
  <option value="<?php echo $donnees['ID_etudiant']; ?>"> <?php echo $donnees['ID_etudiant'] ; ?></option>
<?php
      // mysql_query("INSERT INTO Note_etudiant (idnote_etudiant) VALUES("$_POST['idetudiant']")");

}
?>
 <tr><td>Etudiant</td><td>
 <select name="Etudiant[]" id="etudiant">
 
<?php
 
 $reponse = $bdd->query('SELECT NOM_etudiant, PRENOM_etudiant FROM Etudiant');
 
while ($donnees = $reponse->fetch())
{
?>
          
    <option value="<?php echo $donnees['NOM_etudiant']; ?>"> <?php echo $donnees['PRENOM_etudiant'] ,'  ',$donnees['NOM_etudiant']; ?></option>
<?php
}
 
?>
 </select>
   </td></tr>

   <tr><td>Numero Matiere</td><td>

     <select name="idmatiere[]" id="idmatiere">
 
<?php
 
 $reponse = $bdd->query('SELECT ID_matiere FROM Matieres');
 
while ($donnees = $reponse->fetch(PDO::FETCH_ASSOC))
{
?>
           <option value="<?php echo $donnees['ID_matiere']; ?>"> <?php echo $donnees['ID_matiere']; ?></option>


<?php
//       mysql_query("INSERT INTO Note_etudiant (idnote_matiere) VALUES("$donnees['ID_matiere']")");

}
 
?>

 <tr><td>Matiere</td><td>

     <select name="matiere[]" id="matiere">
 
<?php
 
 $reponse = $bdd->query('SELECT * FROM Matieres');
 
while ($donnees = $reponse->fetch(PDO::FETCH_ASSOC))
{
?>
           <option value="<?php echo $donnees['intitule_matiere']; ?>"> <?php echo $donnees['intitule_matiere'] ,'  ',$donnees['coeff_matiere']; ?></option>
<?php
}
 
?>
 </select>
  </td></tr>
   <tr><td>Saisir la Note : </td><td><input id="idnote" name ="note"></td></tr>
    <tr><td></td><td><INPUT type="submit" value="VALIDER" onclick="verifyNote();"></td></tr>

    <tr><td></td><td><input type="reset" name="Clear" value="Effacer">

 </table>
 </fieldset>

<?php 
 
 if (isset($_POST['idetudiant']) && isset($_POST['idmatiere']) && isset ($_POST['note']) && ($_POST['note']<=20) && ($_POST['note']>0))
 {
   include("connect_db.php");
  mysql_query("INSERT INTO Note_etudiant (idnote_etudiant, idnote_matiere, Note) VALUES(".$idetudiant.",".$idmatiere.",".$note.")");
 }
?>
</form>
</body>
</html>


structure de mes tables
CREATE TABLE Etudiant(
  ID_etudiant int NOT NULL auto_increment,
  NOM_etudiant varchar(40) character set latin1 collate latin1_general_ci NOT NULL,
  PRENOM_etudiant varchar(40) character set latin1 collate latin1_general_ci NOT NULL,
  PRIMARY KEY  (ID_etudiant)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;


CREATE TABLE Matieres (
  ID_matiere int(20) NOT NULL auto_increment,
  intitule_matiere varchar(30) character set latin1 collate latin1_general_ci NOT NULL,
  coeff_matiere int(20) NOT NULL,
  PRIMARY KEY  (ID_matiere)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;


CREATE TABLE Note_etudiant (
  id_note int(10) NOT NULL auto_increment,
  idnote_etudiant int(10) NOT NULL,
  idnote_matiere int(10) NOT NULL,
  Note float NOT NULL,
  PRIMARY KEY  (id_note),
  UNIQUE KEY idnote_etudiant (idnote_etudiant,idnote_matiere)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;



EDIT : Ajout des balises de code (la coloration syntaxique).
Explications disponibles ici :ICI

Merci d'y penser dans tes prochains messages.

4 réponses

Messages postés
34693
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
22 janvier 2022
4 003
Bonjour,

Tu dis utiliser la PDO ...
mais pour pour ton INSERT tu as utilisé :
 mysql_query

....


1
Messages postés
2650
Date d'inscription
lundi 11 février 2013
Statut
Membre
Dernière intervention
13 janvier 2022
485
Salut,

Tu ne peux pas mélanger l'utilisation de plusieurs API pour manipuler ta bdd (PDO et Mysql).
Puisque l'API Mysql est obsolète (et supprimé depuis PHP 7), tu dois donc utiliser les méthodes de PDO pour réaliser ta requête d'insertion (query ou prepare/execute).

Tu devrais facilement pouvoir trouver des tutos sur ce sujet via ton moteur de recherche préféré.

Bonne journée
1
Messages postés
4
Date d'inscription
mardi 12 janvier 2016
Statut
Membre
Dernière intervention
12 janvier 2016

Merci jordan d'avoir rèpondu
j'ai utilisè PDO pour la connexion à la base de donnèes

<?php
try
{
$bdd = new PDO('mysql:host=localhost;dbname=nom_bdd', 'root', '');
}
catch(Exception $e)
{
die('Erreur : '.$e->getMessage());
}

?>
je l'ai appelé dans le formulaire


et je voulais aussi l’utilisé pour les autres requêtes mysql mais je ne suis pas pro en PDO je viens juste de le dècouvrir.
0
Messages postés
34693
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
22 janvier 2022
4 003
Ton code est bourré d'erreurs....
des balises html non fermées ( des </td> , </select> ... </tr> manquants ! )
des erreurs dans le nommage de tes champs

Il est également préférable de placer le code PHP en dehors du html ( pour tout ce qui est "traitement") et il faut récupérer proprement les variables AVANT de les utiliser.
Sans parler des erreurs dans ta requête d'insert ...
Bref, voici ton code corrigé (de tête..il peut donc subsister des erreurs )


<?php
//----------------------------------------------------//
//connexion à la bdd
//----------------------------------------------------//
 require_once "connect_db.php";
 
 //----------------------------------------------------//
 //autres includes
 //----------------------------------------------------//
 include("note_moyenne.php"); 
 
 //----------------------------------------------------//
 //récupération des variables POST
 //----------------------------------------------------//
 $idetudiant = isset($_POST['idetudiant']) ? $_POST['idetudiant'] : NULL;
 $idmatiere = isset($_POST['idmatiere']) ? $_POST['idmatiere'] : NULL;
 $note = isset($_POST['note']) ? $_POST['note'] : NULL;
 
 //****************************************************************************//
 // traitement du submit
 //****************************************************************************//
 if ($idetudiant  &&  $idmatiere && $note && $note<=20 && $note>0) {
   echo "Enregistrement des notes "; //le temps des tests
  
   $sql = "INSERT INTO Note_etudiant (idnote_etudiant, idnote_matiere, Note) VALUES(:idetudiant,:idmatiere,:note)";
  $a_datas = array(
         ":idetudiant"=>$idetudiant
         ,":idmatiere"=>$idmatiere
         ,":note"=>$note
    );
 try{
   $prepare = $bdd->prepare($sql);
    $prepare->execute($a_datas);
 }catch(Exception $e) {
  //en cas de pb dans la requête
   echo "<pre><br>".$e->getMessage()."<br>";
 }
 
 }
 
 
 //----------------------------------------------------//
 //Liste des étudiants:
 //----------------------------------------------------//
  $sql = "SELECT * FROM Etudiant";
 $reponse = $bdd->query($sql);
 $arr_etudiants = $reponse->fetchAll();
 
 //----------------------------------------------------//
 // Liste des matieres
 //----------------------------------------------------//
   $sql = "SELECT * FROM Matieres";
   $reponse = $bdd->query($sql);
   $arr_matiere = $reponse->fetchAll();
?>

<body>

 <h1>Formulaire de saisie de notes des etudiants</h1>
 <form name="form1" method="POST" action="">
  <fieldset>
  <legend>formulaire de saisie de notes</legend> 
 <table>
  <tr>
 <td>Numero Etudiant</td>
 <td>
   <select name="idetudiant[]" id="idetudiant">
  <?php
   foreach ($arr_etudiants as $edutiant){
   echo "<option value='".$edutiant['ID_etudiant']."'> ".$edutiant['ID_etudiant']."</option>";
   }
  ?>
 </select>
 </td>
 <tr>
  <td>Etudiant</td><td>
  <select name="Etudiant" id="etudiant">
  <?php
   foreach ($arr_etudiants as $edutiant){
     echo "<option value='".$edutiant['NOM_etudiant']."'> ".$edutiant['NOM_etudiant']."</option>";
   }
  ?>
  </select>
  </td>
 </tr>

   <tr><td>Numero Matiere</td><td>
    <select name="idmatiere" id="idmatiere">
  <?php
  foreach ($arr_matiere as $matiere){
    echo "<option value='".$matiere['ID_matiere']."'> ".$matiere['ID_matiere']."</option>";
   }
   ?>
   </select>
  </td>
 <tr><td>Matiere</td><td>
  <select name="matiere" id="matiere">
  <?php
  foreach ($arr_matiere as $matiere){
    echo "<option value='".$matiere['intitule_matiere']."'> ".$matiere['intitule_matiere'].'  ' .$matiere['coeff_matiere']."</option>";
   }
   ?>
  </select>
  </td>
 </tr>
  <tr>
  <td>Saisir la Note : </td><td><input id="idnote" name ="note"></td>
 </tr>
  <tr>
  <td></td><td><INPUT type="submit" value="VALIDER" onclick="verifyNote();"></td>
 </tr>
  <tr>
  <td></td>
  <td><input type="reset" name="Clear" value="Effacer">
   </td>
 </tr>
 </table>
 </fieldset>
</form>
</body>
</html>



Cordialement, 
Jordane                                                                 
0
Messages postés
4
Date d'inscription
mardi 12 janvier 2016
Statut
Membre
Dernière intervention
12 janvier 2016

Bonjour jordan,
Merci encore pour la correction
mais en ce qui concerne mon reel probleme c'est à dire
"Apres avoir selectionè des information d'une table de la base de donnees apartir d'un formulaire j'aimerai enregistre les donnèes selectionnèes dans une autre table de la
meme base de donnees."
merci de m'aider par rapport à celà
0
Messages postés
34693
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
22 janvier 2022
4 003 >
Messages postés
4
Date d'inscription
mardi 12 janvier 2016
Statut
Membre
Dernière intervention
12 janvier 2016

Ben si tu as regardé mon code ... c'est bien cette partie là non :
 //****************************************************************************//
 // traitement du submit
 //****************************************************************************//
 if ($idetudiant  &&  $idmatiere && $note && $note<=20 && $note>0) {
   echo "Enregistrement des notes "; //le temps des tests
  
   $sql = "INSERT INTO Note_etudiant (idnote_etudiant, idnote_matiere, Note) VALUES(:idetudiant,:idmatiere,:note)";
  $a_datas = array(
         ":idetudiant"=>$idetudiant
         ,":idmatiere"=>$idmatiere
         ,":note"=>$note
    );
 try{
   $prepare = $bdd->prepare($sql);
    $prepare->execute($a_datas);
 }catch(Exception $e) {
  //en cas de pb dans la requête
   echo "<pre><br>".$e->getMessage()."<br>";
 }
 
 }
 


??
0
Messages postés
4
Date d'inscription
mardi 12 janvier 2016
Statut
Membre
Dernière intervention
12 janvier 2016
>
Messages postés
34693
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
22 janvier 2022

Merci ca marche
0
Messages postés
34693
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
22 janvier 2022
4 003 >
Messages postés
4
Date d'inscription
mardi 12 janvier 2016
Statut
Membre
Dernière intervention
12 janvier 2016

Si la question est résolue..
Merci de ne pas oublier de clôturer le sujet
(en cliquant sur le lien "Marquer comme résolu" qui se trouve sous le titre de la question)

Cordialement,
Jordane
0