Partage
  • Partager sur Facebook
  • Partager sur Twitter

Un formulaire pour modifier plusieurs news

Une boucle dans le tableau

    23 février 2010 à 12:14:53

    Salut à tous,
    Je réalise un formulaire ayant pour but de modifier les news d'un site via SQL, rien de bien fou.
    Pourtant je ne comprends pas un problème, du moins, je ne vois pas comment faire.

    Le code du formulaire :
    <!-- Modifier une news -->
    
    <!-- Début du tableau -->
    <table>
    
    <!-- Titre du tableau -->
    <caption id="modifier_news">Modifier une news</caption>
    
    <!-- En-tête du tableau -->
    <thead>
    <tr>
    <th>ID</th>
    <th>Titre</th>
    <th>Contenu</th>
    <th>Date</th>
    <th>Heure</th>
    <th>Modifier</th>
    </tr>
    </thead>
    
    <!-- Corps du tableau -->
    <tbody>
    
    <!-- Début du formulaire -->
    <form method="post" action="traitement_modification_news.php">
    
    <fieldset>
    
    <?php
    
    // Connexion à la BDD :
    include ("connexion_sql.php");
    
    // Récupération des news :
    $reponse = mysql_query("SELECT * FROM news ORDER BY id DESC") or die(mysql_error());
    
    // Début de la boucle d'affichage des news :
    while ($donnee = mysql_fetch_array($reponse))
    {
    ?>
    
    <!--Début d'une ligne -->
    <tr>
    
    <!-- ID -->
    <td><textarea name="id_news" disabled="disabled" ><?php echo $donnee['id']; ?></textarea></td>
    
    <!-- Titre -->
    <td><textarea name="titre_news"><?php echo $donnee['titre']; ?></textarea></td>
    
    <!-- Contenu -->
    <td><textarea name="contenu_news"><?php echo $donnee['contenu']; ?></textarea></td>
    
    <!-- Date -->
    <td><textarea name="date_news"><?php echo $donnee['date']; ?></textarea></td>
    
    <!-- Heure -->
    <td><textarea name="heure_news"><?php echo $donnee['heure']; ?></textarea></td>
    
    <!-- Bouton d'envoi -->
    <td><input class="envoyer" type="submit"></input></td>
    
    <!-- Fin d'une ligne -->
    </tr>
    
    <?php
    
    }
    ?>
    
    </tbody>
    
    </fieldset>
    
    <!-- Fin du formulaire -->
    </form>
    


    Ce formulaire semble bien marcher.
    Cependant, voici la page traitement_modification_news.php :
    <?php echo ''.$_POST['titre_news'].' '.$_POST['id_news'].' '.$_POST['contenu_news'].' '.$_POST['date_news'].' '.$_POST['heure_news'].''; ?>
    


    Et là c'est le drame, si j'ai plus d'une news, en cliquant sur le bouton valider face à la news 2, le traitement_modification_news.php me renvoit les information de la news 1.

    Je vous rajoute deux screens afin que vous visualisiez mieux le système.

    Ici je clique sur le valider de la news 2 :
    Image utilisateur

    Ici, la page de traitement récupère les infos de la news 1 :
    Image utilisateur

    Si vous avez bien compris, mon problème sera résolut quand en cliquant sur le valider face à la news 2, le traitement m'affichera les données de la news 2.

    J'espère avoir été compréhensible :)
    • Partager sur Facebook
    • Partager sur Twitter
    Open your mind!
      23 février 2010 à 12:19:16

      Je ne sais pas si c'est une bonne méthode, mais il faudrait que tu fasse un fomulaire par ligne au lieu de faire un formulaire pour tout. Car là, ça envoi bien les données de ID=2 mais elles sont écrasées par les données de ID=1 :)
      • Partager sur Facebook
      • Partager sur Twitter
        23 février 2010 à 12:21:13

        Je me doute que cette méthode marche, mais je suis sur qu'une façon plus propre existe.
        Merci quand même, je la garde en tête en attendant une meilleur proposition :)
        • Partager sur Facebook
        • Partager sur Twitter
        Open your mind!
          23 février 2010 à 12:26:31

          ca existe, en passant par du javascript (AJAX).
          • Partager sur Facebook
          • Partager sur Twitter
            23 février 2010 à 12:42:29

            Comme la dit CustMax, je te suggère de faire un formulaire pour chaque news.

            Une petite idée sur la marche à suivre (ou pas, il y'a surement d'autres solutions^^):
            <form method="post" action="traitement_modification_news.php?id_news=<?php echo $donnee['id']; ?>">
            


            Je te laisse modifier ton code en conséquence. Oublie pas de récupérer dans ton fichier traitement_modification_news.php la valeur d'id news entré en paramètre avec $_GET ;)
            • Partager sur Facebook
            • Partager sur Twitter
              23 février 2010 à 13:13:34

              Merci beaucoup, la technique en question marche :)

              Il y a juste un problème d'affichage qui vient d'apparaitre semble-t-il.
              Le tableau n'est plus dans son fieldset, et il va tout en bas de la page, et idem pour un autre tableau en bas, qui lui va après le pied de page !
              Pourtant, la page est faite d'includes, c'est assez incroyable.

              Voici la page administration :
              <!-- Début de la page d'administration -->
              
              <div id="corps" >
              
              <p>
              <span class ="titre_page" >Administration</span><br />
              <?php
              include ("ajout_news.php");
              
              include ("modification_news.php");
              
              include ("ajout_concert.php");
              
              include ("modification_concert.php");
              ?>
              
              </p>
              
              </div>
              
              <!-- Fin de la page d'administration -->
              


              Et voici un screen qui montre comment est afficher la page :
              Image utilisateur

              Je pense que le fait qu'il y ait une boucle dans le fieldset doit jouer un rôle mais c'est peut commun ...
              • Partager sur Facebook
              • Partager sur Twitter
              Open your mind!

              Un formulaire pour modifier plusieurs news

              × 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