Partage
  • Partager sur Facebook
  • Partager sur Twitter

Récupèrer les infos d'une ligne dans un tableau

Sujet résolu
    17 septembre 2019 à 11:58:35

    Bonjour, je suis actuellement débutant en PHP en vue d'intégrer une formation dans un mois. Je suis actuellement en train de faire un exercice pour moi pour m'exercer.

    Pour cet exercice j'ai un formulaire d'inscription, un tableau pour afficher les enregistrements de ma table, ainsi qu'un bouton editer en fin de chaque ligne dans mon tableau qui me redirige sur le formulaire d'édition pour l'update de l'enregistrement.

    LE PROBLEME:

    Mon update fonctionne lorsque je fais une modification, mais le soucis, c'est que dans mon formulaire d'édition j'arrive à récupèrer l'id de l'enregistrement, mais pas les infos du bon id, il me prend systématiquement les infos de la dernière ligne du tableau et je n'arrive pas à faire en sorte qu'il récupère les bonnes infos qui sont en lien avec l'id, je vous met mon code pour que vous y voyez plus clair.

    Merci beaucoup.

    Voici le code qui me permet d'aller chercher et d'afficher les enregistrements de ma table SQL.

    <table class="table table-sm table-dark">
                        <thead>
      <tr>
     <th scope="col"> id </th>
     <th scope="col"> Nom </th>
     <th scope="col"> Prénom </th>
     <th scope="col"> Adresse </th>
     <th scope="col"> Enfants </th>
     <th scope="col">Situation</th>
      </tr>
                        </thead>
            
    
    $serveur = "localhost";
    $login = "root";
    $pass = "";
    
    
    $connexion = new PDO("mysql:host=$serveur;dbname=test",$login,$pass);
            
                   $requete = $connexion->prepare("SELECT * FROM formulaire");
            
                    $requete->execute();
                       
            while($donnees=$requete->fetch()) 
            {
    
        ?>
                        
        <form method="POST" action="modifierinfo.php">
            <tbody>     
        <?php
        echo "<td>$donnees[id]</td>";
        echo '<input type="hidden" name="id1" class="form-control" value="'.$donnees['id'].'"/>';
                
        echo "<td>$donnees[nom]</td>";
        echo '<input type="hidden" class="form-control" name="nom1" value="'.$donnees['nom'].'"/>';
                
        echo "<td>$donnees[prenom]</td>";
        echo '<input type="hidden" name="prenom1" class="form-control" value="'.$donnees['prenom'].'"/>';
    
        echo "<td>$donnees[adresse]</td>";
        echo '<input type="hidden" name="adresse1" class="form-control" value="'.$donnees['adresse'].'"/>';
    
        echo "<td>$donnees[enfants]</td>";
        echo '<input type="hidden" name="enfants1" class="form-control" value="'.$donnees['enfants'].'"/>';
    
        echo "<td>$donnees[situation]</td>";
        echo '<input type="hidden" name="situation1" class="form-control" value="'.$donnees['situation'].'"/>';
                
        echo '<td><button type="submit" name="monid" class="btn btn-primary" value="'.$donnees['id'].'">Editer</button></td>';
    
            }         
        ?>  
                </tbody>
                        </form>
      </table>  
            


    Voici maintenant le code qui correspond à mon formulaire d'édition.

    <form method="POST" action="modifier.php">
            
               <div class="col-2">
                   <div class=row>
     <div class=center-block style=float:none;>
         <div class="form-group">
        <label for="id">ID :</label>
        <input type="text" class="form-control" name="id2" value ="<?php echo $_POST['monid']?>" disabled>
      </div>
     <div class="form-group">
        <label for="nom">Nom :</label>
        <input type="text" class="form-control" name="nom2" value ="<?php echo $_POST['nom1']?>" required>
      </div>
           
                <div class="form-group">
        <label for="prenom">Prénom :</label>
        <input type="text" class="form-control" name="prenom2" value ="<?php echo $_POST['prenom1']?>" required>
      </div>
                <div class="form-group">
        <label for="prenom">Adresse :</label>
        <input type="text" class="form-control" name="adresse2" value="<?php echo $_POST['adresse1']?>" required>
      </div>
                   
      <div class="form-group">
        <label for="prenom">Nombre d'enfants :</label>
        <input type="text" class="form-control" name="enfants2" value="<?php echo $_POST['enfants1']?>" required>
      </div>
         
          <div class="form-group">
        <label for="prenom">Situation :</label>
        <input type="text" class="form-control" name="situation2" value="<?php echo $_POST['situation1']?>" required>
      </div>
                   
                <button type="submit" class="btn btn-primary">Enregistrer</button>
     </div>
                   </div></div>
            
            </form>



    • Partager sur Facebook
    • Partager sur Twitter
      17 septembre 2019 à 12:14:37

      Salut,

      tu le génères comment ton formulaire d'édition ?

      • Partager sur Facebook
      • Partager sur Twitter
        17 septembre 2019 à 12:36:37

        bonjour, je ne suis pas sur d'avoir bien compris la question. :)
        • Partager sur Facebook
        • Partager sur Twitter
          17 septembre 2019 à 13:01:29

          Simplement que dans ton formulaire d'édition, tu cherches des données en $_POST alors qu'elles devraient plutôt venir de la base de données.

          • Partager sur Facebook
          • Partager sur Twitter
            17 septembre 2019 à 13:28:04

            Le HTML généré n'est pas bon déjà : les balises ouvrantes form et tbody sont dans la boucle quand celles qui les terminent sont hors de la boucle. Tout est dedans ou tout est en dehors mais pas un mélange des deux.

            Pourquoi tu as deux formulaires pour modifier tes données ?

            > le soucis, c'est que dans mon formulaire d'édition j'arrive à récupérer l'id de l'enregistrement, mais pas les infos du bon id, il me prend systématiquement les infos de la dernière ligne du tableau

            C'est fait où ça ? Parce que je ne vois pas de SELECT ... WHERE id = ? pour commencer.

            -
            Edité par julp 17 septembre 2019 à 13:31:43

            • Partager sur Facebook
            • Partager sur Twitter
              17 septembre 2019 à 13:29:02

              Les infos viennent de la base de données, elles s'affichent toutes dans une ligne dans un tableau et ce sont les infos de la ligne que j'aimerai envoyer dans les input, et c'est cela qui ne fonctionne pas.
              • Partager sur Facebook
              • Partager sur Twitter
                17 septembre 2019 à 13:35:29

                christouphe a écrit:

                Simplement que dans ton formulaire d'édition, tu cherches des données en $_POST alors qu'elles devraient plutôt venir de la base de données.



                • Partager sur Facebook
                • Partager sur Twitter
                  17 septembre 2019 à 13:54:44

                  Merci à vous, et Julp tu avais raison, j'ai modifier l'indentation des balises.

                   <?php
                             echo'<form method="POST" action="modifierinfo.php">';
                              echo"<tbody>";
                      echo "<td>$donnees[id]</td>";
                      echo '<input type="hidden" name="id1" class="form-control" value="'.$donnees['id'].'"/>';
                               
                      echo "<td>$donnees[nom]</td>";
                      echo '<input type="hidden" class="form-control" name="nom1" value="'.$donnees['nom'].'"/>';
                               
                      echo "<td>$donnees[prenom]</td>";
                      echo '<input type="hidden" name="prenom1" class="form-control" value="'.$donnees['prenom'].'"/>';
                   
                      echo "<td>$donnees[adresse]</td>";
                      echo '<input type="hidden" name="adresse1" class="form-control" value="'.$donnees['adresse'].'"/>';
                   
                      echo "<td>$donnees[enfants]</td>";
                      echo '<input type="hidden" name="enfants1" class="form-control" value="'.$donnees['enfants'].'"/>';
                   
                      echo "<td>$donnees[situation]</td>";
                      echo '<input type="hidden" name="situation1" class="form-control" value="'.$donnees['situation'].'"/>';
                               
                      echo '<td><button type="submit" name="monid" class="btn btn-primary" value="'.$donnees['id'].'">Editer</button></td>';
                   echo"</tbody>";
                  echo"</form>";
                          }        
                      ?>   
                          </table></body></html>

                  Ca marche, sujet résolu :)

                  • Partager sur Facebook
                  • Partager sur Twitter

                  Récupèrer les infos d'une ligne dans un tableau

                  × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                  × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                  • Editeur
                  • Markdown