Bonjour,
utiliser les checkbox s’avère beaucoup plus compliqué que ce que j’imaginais… j’ai une table dans laquelle j’enregistre les valeurs de mes checkbox (0 : non coché ; 1 : coché) l’utilisateur peut donc cocher ou décocher la checkbox "NR" de chaque enregistrement
l’affichage fonctionne correctement : lorsque la valeur est 0 en base la case est décochée et cochée quand c’est 1.
par contre, l’action de cocher/décocher et enregistrer la valeur correspondante en base ne fonctionne pas correctement :
quelque soit la case que je coche, tous les enregistrements affichés passent à 1 dans ma table
par ailleurs, le fait de décocher mes checkbox, n’enregistre pas 0 en base
j’ai regardé la valeur de $_POST[’non_rec’] avec var_dump() et j’ai bien un tableau et qui récupère bien ’on’ si coché et ’0’ si non coché et dans mon traitement j’utilise l’indice du tableau
donc je ne vois pas trop ce qui est faux une piste de réflexion ?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 | <form id="insertion" name="insertion" action="dms_modification3.php" method="POST"> <?php while($element= $query -> fetch()) { ?> <input type="hidden" name="limite" value="<?php echo($limite) ;?>"> <table> <tr class="class02"> <td class="ID"><input class="id" type="text" name="id[]" value="<?php echo $element['id'] ;?>"></td> <td class="Patient"><input class="pat" type="text" name="pat[]" value="<?php echo $element['pat'] ;?>"></td> <td class="Fiche"><input class="fic" type="text" name="fic[]" value="<?php echo $element['fic'] ;?>"></td> <td class="Question"><input class="que" type="text" name="que[]" value="<?php echo $element['que'] ;?>"></td> <td class="Description"><input class="des" type="text" name="des[]" value="<?php echo $element['des'] ;?>"></td> <td class="Details"><input class="det" type="text" name="det[]" value="<?php echo $element['det'] ;?>"></td> <td class="Corrections"><input class="cor" type="text" name="cor[]" value="<?php echo $element['cor'] ;?>"></td> <!--<td class="NR"><input class="non_rec" type="checkbox" name="non_rec[]" value="<?php echo $element['non_rec'] ;?>"></td>--> <td class="NR"> <input type="hidden" name="non_rec[]" value="0"/> <input class="non_rec" type="checkbox" name="non_rec[]" <?php if($element['non_rec'] == 1) echo ' CHECKED="checked"'; ?> > </td> <td class="Commentaires"><input class="com" type="text" name="com[]" value="<?php echo $element['com'] ;?>"></td> </tr> </table> <?php }//fin while ?> <div> <input class="modifier" type="submit" value="Modifier"> </div> </form> ` |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 | <?php //connection au serveur try { // On se connecte à MySQL $bdd = new PDO('mysql:host=localhost;dbname=dms;charset=utf8', 'root', '', array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION)); } catch(Exception $e) { // En cas d'erreur, on affiche un message et on arrête tout die('Erreur : '.$e->getMessage()); } //$nb = count($_POST['id']); $limite = $_POST['limite']; var_dump($_POST['non_rec'][1]); //préparation de la requête $requete = "UPDATE gbd_dat1 SET pat = :patient, fic = :fiche, que = :question, des = :description, det = :details, cor = :correction, non_rec = :nonrecuperable, com = :commentaires WHERE id = :id "; /* On prépare la requête à son exécution. Les marqueurs seront identifiés */ $result = $bdd->prepare($requete); //print_r($bdd->errorInfo()); $result->bindParam('id',$id,PDO::PARAM_INT); $result->bindParam('patient',$patient,PDO::PARAM_STR); $result->bindParam('fiche',$fiche,PDO::PARAM_STR); $result->bindParam('question',$question,PDO::PARAM_STR); $result->bindParam('description',$description,PDO::PARAM_STR); $result->bindParam('details',$details,PDO::PARAM_STR); $result->bindParam('correction',$correction,PDO::PARAM_STR); $result->bindParam('nonrecuperable',$nonrecuperable,PDO::PARAM_INT); $result->bindParam('commentaires',$commentaires,PDO::PARAM_STR); for($i=0;$i<$limite;$i++) { $patient=$_POST['pat'][$i]; $fiche=$_POST['fic'][$i]; $question=$_POST['que'][$i]; $description=$_POST['des'][$i]; $details=$_POST['det'][$i]; $correction=$_POST['cor'][$i]; //$nonrecuperable=$_POST['non_rec'][$i]; $nonrecuperable = isset($_POST['non_rec'][$i]) ? 0 : 1; $commentaires=$_POST['com'][$i]; $id=$_POST['id'][$i]; $result->execute(); //var_dump($patient); } //affichage des résultats, pour savoir si la modification a marchée: if($requete) { echo("La modification à été correctement effectuée") ; } else { echo("La modification à échouée") ; } ?> ` |