Modifier plusieurs lignes avec un champ identique dans un while

Résolu/Fermé
Speecial Messages postés 26 Date d'inscription mercredi 18 octobre 2017 Statut Membre Dernière intervention 16 avril 2020 - Modifié le 7 févr. 2019 à 09:45
Speecial Messages postés 26 Date d'inscription mercredi 18 octobre 2017 Statut Membre Dernière intervention 16 avril 2020 - 7 févr. 2019 à 11:38
Bonsoir à tous, après une longue recherche je vous expose mon problème.

Dans le cadre d'une rédaction de paragraphes pour de grands textes, je souhaite mettre au point un système permettant de réorganiser ceux-cis par le biais d'un champ que j'ai nommé "ordre".

les résultats sont sortis dans une boucle (les paragraphes déjà rédigés) et pour chaque ligne je récupère l'id puis j'ajoute un champs de type number pour ajouter des chiffres du plus petit au plus grand (toujours pour chaque ligne).

Pour terminer j'ai un bouton de type submit en bas du tableau qui m'affiche les résultats et je souhaiterais pouvoir renseigner un ordre pour chaque paragraphe avant de valider dans le bas de la page.

voici mon code php celui qui permet de modifier le champ ordre des résultats que me retourne ma boucle.

            if(isset($_POST['reajust'])){

              $id = $_POST['id'];
              $ordre_modif = $_POST['ordre'];    

                $req1 = $bdd->prepare('SELECT * FROM `chapitres` WHERE `id` = :id');
                $req1->bindValue(':id', $id);
                $req1->execute();
                              
                  while ($d1 = $req1->fetch(PDO::FETCH_OBJ)) {
                    $id_2 = $d1->id;

                    $req = $bdd->prepare('UPDATE chapitres SET order = :order WHERE id = :id');
                    $req->execute(array('order' => $ordre_modif, 'id' => $id_2));
                    $req->closeCursor();

                  }

              echo "on est ok";
            }


et voici mon code html

                  <form method="post" action="" >
                    <table border="0" width="100%" cellspacing="0">
                      <tr align="left">
                        <th class="title_tab">Réorganiser l'ordre des chapitres</th>
                        <th class="title_tab"> </th>
                      </tr>
                    

                    <?php
                        $req = $bdd->query('SELECT * FROM chapitres ORDER BY id ASC');
                            while($donnees = $req->fetch()){

                         echo "<tr style='background-color:".(++$i%2==0 ? "rgba(0, 0, 0, 0)" : "rgba(0, 0, 0, 0.1)").";' align='center'>";
                    ?>
                      
                        <td align="left" class="td_player"><?php echo $donnees['titre_chap']; ?></td>
                        <td align="right" class="td_player">

                          <input type="hidden" name="id" value="<?php echo $donnees['id']; ?>" />
                          <input class="text" style="width:70px;padding:1px;" type="number" name="ordre" value="<?php echo $donnees['order']; ?>" />

             
                    <?php
                        } 
                        $req->closeCursor();
                    ?>
                    </table>
                      <br />
                        <div align="right">
                          <input type="submit" class="submit" style="width:200px;" name="reajust" value="Réorganiser"/>
                        </div>
                      </form>




pensez vos que je dois utiliser les array ?
merci aux personnes qui pourront m'aider,

EDIT : Correction des balises de code

Cdlt, Alex.
A voir également:

1 réponse

jordane45 Messages postés 38446 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 28 février 2025 4 737
7 févr. 2019 à 09:48
Bonjour,

COmmence par modifier ton formulaire comme ceci:
<!-- <input type="hidden" name="id" value="<?php echo $donnees['id']; ?>" /> -->
<input class="text" style="width:70px;padding:1px;" type="number" name="ordre[<?php echo $donnees['id']; ?>][]" value="<?php echo $donnees['order']; ?>" />


Puis dans le script de traitement de ton formulaire.... regarde ce que contient $_POST
//affiche le contenu de $_POST
print_r($_POST);


Tu verras qu'il te sera plus facile de faire une boucle afin de pouvoir mettre à jour les données dans ta bdd

1
Speecial Messages postés 26 Date d'inscription mercredi 18 octobre 2017 Statut Membre Dernière intervention 16 avril 2020
7 févr. 2019 à 11:38
Salut Jordan, je venais pour signaler que j'ai enfin réussi ça fonctionne au top avec un foreach qui me liste les différents id sous forme d'un array.

En effet j'ai du dans la boucle qui contient le formulaire modifier les name de mes champs id[] et ordre[]

J'ai trouvé ma réponse ici sur CCM :)

Merci de ton intervention je clos le sujet
0