Résolu INSERTION multiple de donnees dans MySQL

Solutions (1)
Tags :
  • Echo
|
Bonjour Archipeldufond , Vieux C*N Psychorigide... Je tiens a te remercier personnellement pour ton effort, je suis sur la bonne voix mais un dernier effort pour pousser plus loin ton frère que je suis. J'ai suivit tes instruction et voila le "addnote.php" que j'ai pu mettre en place. Mais le seul problème que j'ai c'est que mon enregistrement ne se fait qu'une seul fois, juste le 1er élément du tableau arrive a s’insérer dans la table NOTER, STP peut tu me corriger??? Voici mon 1er code, celui qui affiche la liste de classe:

  1. echo '<div class= "component">';
  2. echo ' <form id="form_1021003" class="" autocomplete="off" method="post" action="index.php?module=note&action=newnote"> ';
  3. echo ' <table> <caption>Liste de la classe de: '.$nom_de_classe.' </br> Effectif de classe: '.$effectif.' </caption>
  4. <thead>
  5. <tr>
  6.  
  7. <th>nom </th>
  8. <th>prenom(s) </th>
  9. <th>noter </th>
  10. </tr>
  11. </thead>';
  12. echo' <tbody>';
  13. $req = $bdd->query(' SELECT ideleve, nom_ele, prenom_ele FROM '.$table.' WHERE classe_idclasse = '.$classeid.' ORDER BY nom_ele LIMIT '.$premier_article.', '.$dernier_article.' ');
  14. while ($donnees = $req->fetch(PDO::FETCH_ASSOC)){
  15. print_r(var_dump($donnees));
  16. //vos données à afficher
  17. echo'
  18. <tr>
  19. <td>'.utf8_encode($donnees['nom_ele']).'</td> <td>'.utf8_encode($donnees['prenom_ele']).'</td> <td><input id="element_13" name="noteinput_'.$donnees['ideleve'].'" class="element text medium" type="text" maxlength="255" value=""/></td>
  20. <input type="hidden" name="ideleve_'.$donnees['ideleve'].'" value="'.$donnees['ideleve'].'" />';
  21. echo '</tr>';
  22.  
  23. }
  24. echo ' </tbody>';
  25. echo '</table>' ;
  26. echo '<input type="hidden" name="ideval" value="'.$evalid.'" />';
  27. echo '<input type="hidden" name="effec" value="'.$effectif.'" />';
  28. echo '<input type="hidden" name="classe" value="'.$classeid.'" />';
  29. echo '<div class="valider" style="display: inline; position: relative; right: 245px;"> <center><input type="submit" value="Valide"/></center></div>';
  30. echo '</form>';
  31. affichage_des_liens($page, $nbr_pages);
  32. echo '</div>';
  33.  
  34. }else{
  35. $erreurs_a[]= 'Veuillez remplir les champs obligatoires!';
  36. include CHEMIN_VUE .'ajout_note.php';
  37. }


Ensuite Voici maintenant le "addnote.php" qui doit enregistrer les donnees:

  1. // On recupere les $_post du formulaire des notes
  2.  
  3. $eval = $_POST['ideval'];
  4. $classe = $_POST['classe'];
  5. $nbr = $_POST['effec'];
  6. echo $eval;
  7. echo $classe;
  8. // on recupere la liste de classe par id des eleve
  9. $donnees = array();
  10. $pdo = PDO2::getInstance();
  11. $requete = $pdo->prepare(" SELECT ideleve FROM eleve WHERE classe_idclasse = :classeid ");
  12. $requete->bindValue(':classeid',$classe);
  13. $requete->execute();
  14. // on enregistre dans une boucle
  15. for($i=1; $i<=$nbr; $i++){
  16. while ($donnees = $requete->fetch(PDO::FETCH_ASSOC)){
  17. var_dump($donnees['ideleve']);
  18.  
  19. if(!empty($_POST['noteinput_'.$donnees['ideleve']])){
  20. $pdo = PDO2::getInstance();
  21. $requete = $pdo->prepare("
  22. INSERT INTO noter SET
  23. id_eval = :eval,
  24. classe_idclasse = :classe,
  25. eleve_idele = :idele,
  26. note = :note,
  27. date_note = CURDATE()
  28. ");
  29. $requete->bindValue(':eval',$eval);
  30. $requete->bindValue(':classe',$classe);
  31. $requete->bindValue(':idele',$_POST['ideleve_'.$donnees['ideleve']]);
  32. $requete->bindValue(':note',$_POST['noteinput_'.$donnees['ideleve']]);
  33. $requete->execute();
  34. }
  35. }
  36. }


Merci merci pour tous,
  • sayhaxis a édité ce message
  • sayhaxis a édité ce message
Contenus similaires
Meilleure solution
partage
, Vieux c*n psychorigide |
Re,

Citation :
for($i=1; $i<=$nbr; $i++){
while ($donnees = $requete->fetch(PDO::FETCH_ASSOC)){


Ici le for() est en trop, quand tu sera passé une fois dans le while le curseur du fetch aura déja atteint la fin des résultats ( et $i n'est jamais utilisé).

Ensuite, pour vérifier si toutes les notes sont bien transmises à addnote.php, tu peux utiliser l'outil de développeur (disponible sous chrome et firefox) dans l'onglet réseau. (ou faire un print_r($_POST) )

Tu peux aussi ajouter une variable qui récupère le retour de ->execute() pour voir si la fonction se déroule bien (en affichant 0 ou 1)

Ce que je ferai aussi pour débuger c'est afficherà l'écran la requete qui va être executée
  • sayhaxis a sélectionné cette solution comme la meilleure réponse
  • Commenter cette solution |

Ce n'est pas ce que vous cherchiez ?

Tom's guide dans le monde
  • Allemagne
  • Italie
  • Irlande
  • Royaume Uni
  • Etats Unis
Suivre Tom's Guide
Inscrivez-vous à la Newsletter
  • ajouter à twitter
  • ajouter à facebook
  • ajouter un flux RSS