Menu

Modifier plusieurs lignes avec un champ identique dans un while [Résolu]

Messages postés
19
Date d'inscription
mercredi 18 octobre 2017
Dernière intervention
17 février 2019
-
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.
Afficher la suite 

Votre réponse

1 réponse

Meilleure réponse
Messages postés
24625
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
21 février 2019
1857
1
Merci
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

Dire « Merci » 1

Heureux de vous avoir aidé ! Vous nous appréciez ? Donnez votre avis sur nous ! Evaluez CommentCaMarche

CCM 56682 internautes nous ont dit merci ce mois-ci

Speecial
Messages postés
19
Date d'inscription
mercredi 18 octobre 2017
Dernière intervention
17 février 2019
-
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
Commenter la réponse de jordane45