Partage
  • Partager sur Facebook
  • Partager sur Twitter

Champ value d'un formulaire caché et UPDATE de la BDD

TP du système de news de M@teo21

Anonyme
    28 décembre 2005 à 14:14:19

    Bonjour à toutes et à tous,

    je viens vous demander un peu d'aide pour réaliser le TP du système de news.
    J'en suis quasiment à la fin, j'ai réalisé toutes les pages, le système marche correctement. J'ai donc une page index sur laquelle on affiche les news, et avec un lien vers une page liste_news, sur laquelle on peut soit ajouter une news, par un lien html normal amenant à la page rediger_news, sur laquelle se trouve mon formulaire, soit supprimer une news, soit en modifier une existante.

    Tout marche, sauf une chose. Je n'arrive pas à trouver le code qui me premette d'indiquer qu'il faut faire un UPDATE si la variable du champ caché de rediger_news est différenter de 0.
    Je pense que cela pourrait venir du fait que je n'ai pas remplie correctement le "value" de mon champ caché. En effet la variable est bien transmise car quand je fais un echo sur liste_news, la valeur s'affiche, mais seulement quand j'attribue directement une valeur à "value".
    Je vous précise aussi que le texte de la news à modifier s'affiche cirrectement sur rediger_news
    Voici mon code:

    code de liste_news:
    <? if (isset($_POST['titre']) AND isset($_POST['contenu']))
            {
            if ($_POST['modifier_news_id'] == 0)
            {
            $titre = $_POST['titre'];
            $contenu = $_POST['contenu'];
           
           
            mysql_connect ("****", "****", "****");
            mysql_select_db ("******");
           
            mysql_query("INSERT INTO news VALUES('', '$titre', '$contenu')");
            mysql_close();
            }
            elseif ($_POST['modifier_news_id']!= 0)
            {
            $id_news =$_POST['modifier_news_id'];
            $titre = $_POST['titre'];
            $contenu = $_POST['contenu'];
            mysql_connect ("*****", "*****", "****");
            mysql_select_db ("******");
           
            mysql_query('UPDATE news SET titre=' .$titre. ', contenu= ' .$contenu . 'WHERE id=' .$id_news. '');
            mysql_close();
            }
            }


    code de rediger_news :

    <?

    // il y a du code au dessus...
                    if (isset($_GET['modifier_news']))
                    {
                    $modifier_news = $_GET['modifier_news'];
                    mysql_connect ("****", "****", "****");
                    mysql_select_db ("******");
           
                   
                    $modifier_une_news = mysql_query("SELECT contenu FROM news WHERE id='$modifier_news'");
                    echo mysql_result($modifier_une_news,0);
                    mysql_close();
                    }
                    else
                    {
                    $modifier_news ="Rediger une nouvelle news:";
                    echo $modifier_news;
                    }
                    ?>
                    </textarea>
                    <br />
                    <input type="hidden" name="modifier_news_id" value="<?' .$modifier_news ';?>" />  // Le problème ne vient-il pas d'ici?
                    <input type="submit" value="Envoyer"/>
    </p>
    </form>




    Voilà, comment faire pour que mon UPDATE marche?
    Si vous pouviez me mettre sur la voix sans me donner le code se srait bien, sauf si c'est une erreur dans le code.

    Merci d'avance, au revoir.

    • Partager sur Facebook
    • Partager sur Twitter
      28 décembre 2005 à 14:23:55

      Yoop
      Un truc tout bête mais ce n'est peut être pas çà (voire surement :p ) :
      mysql_query('UPDATE news SET titre=' .$titre. ', contenu= ' .$contenu . 'WHERE id=' .$id_news. '');
      => essaie de mettre un espace entre le ' et le WHERE ^^
      Bonne aprem :)
      • Partager sur Facebook
      • Partager sur Twitter
        28 décembre 2005 à 14:30:05

        Essaye ceci l'ami :

        mysql_query(' UPDATE news SET titre = "'.$titre.'", contenu = "'.$contenu .'" WHERE id = "'.$id_news.'" ');

        Sa devrait fonctionner :)
        • Partager sur Facebook
        • Partager sur Twitter
        Anonyme
          28 décembre 2005 à 14:30:31

          Bonjour,

          non apparement ce n'est pas ça, mais merci quand même ;) .
          Ce que je ne comprends pas en plus c'est que quand j'ajoute une news, le echo me montre que la valeur transmise est égale à 0, et quand je fais modifier le echo n'affiche plus rien.
          Quelqu'un saurait?

          Merci, au revoir.


          EDIT 1: Non SPIKE, ça ne marche toujours pas :( . Merci quand même ;) .
          • Partager sur Facebook
          • Partager sur Twitter
            28 décembre 2005 à 21:30:31

            Alors l'ami, j'aurait besoin d'avoir tout les noms de la table "news", en attendant j'ai corrigé tes deux morceau de code, je l'ai ai rendu un peu plus propore disont :) C'était la pagaille

            if (isset($_POST['titre']) AND isset($_POST['contenu'])){
                    if ($_POST['modifier_news_id'] == 0){
                            $titre = $_POST['titre'];
                            $contenu = $_POST['contenu'];
                   
                            mysql_connect ("****", "****", "****");
                            mysql_select_db ("******");
                   
                            mysql_query('INSERT INTO news VALUES ("", "'.$titre.'", "'.$contenu.'";)');
                            mysql_close();
                    } elseif($_POST['modifier_news_id']!= 0) {
                            $id_news =$_POST['modifier_news_id'];
                            $titre = $_POST['titre'];
                            $contenu = $_POST['contenu'];
                            mysql_connect ("*****", "*****", "****");
                            mysql_select_db ("******");
                   
                            mysql_query('UPDATE news SET titre = "'.$titre.'", contenu= "'.$contenu.'" WHERE id = "' .$id_news. '"');
                            mysql_close();
                    }
            }


            if (isset($_GET['modifier_news'])) {
                    $modifier_news = $_GET['modifier_news'];
                    mysql_connect ("****", "****", "****");
                    mysql_select_db ("******");
                    mysql_query('SELECT contenu FROM news WHERE id = "'.$modifier_news.'"');
                    mysql_close();
            } else {
                    $modifier_news = "Rediger une nouvelle news:";
                    echo $modifier_news;
            }
            • Partager sur Facebook
            • Partager sur Twitter
            Anonyme
              28 décembre 2005 à 22:51:11

              Bonjour,

              je suppose que par nom, tu entends champ.

              J'ai donc un champ "id" en auto-increment, un champ "titre", et un champ "contenu".

              Merci d'avoir corrigé mon code :) .

              Au revoir.
              • Partager sur Facebook
              • Partager sur Twitter
                28 décembre 2005 à 23:00:19

                Hum ...

                Pour modifier une news, il faut que la news est identifée par son id mais avant cela son id doit être définit, ici la variable de son id est $modifier_news mais le problème c'est que cette variable est mal définit car ceci n'existe pas : <?' .$modifier_news ';?>

                mais ceci marcherait très bien :
                <? echo $modifier_news ;?>

                Essaie ceci est dis moi si ceci est bon ou pas ;)
                • Partager sur Facebook
                • Partager sur Twitter
                  29 décembre 2005 à 12:08:00

                  Rifane >
                  Ton morceau de code va afficher la valeur attribué à la variable (c'est le but du echo).
                  Essaye de viré le WHERE, comme sa normalement sa devrait mettre à jour toute les entrés dans la table, si sa marche, alors le problème viendra inévitablement du WHERE :)
                  • Partager sur Facebook
                  • Partager sur Twitter
                  Anonyme
                    29 décembre 2005 à 12:22:57

                    Bonjour à toutes et à tous,

                    merci de vos réponses.
                    Le code de rifance foncionne effectivement :) . Cependant rifane, pourrait-tu expliquer pourquoi il faut utiliser un echo dans un champ caché? o_O

                    SPIKE, merci d'avoir corrigé mon code. :)

                    Il me reste un petit problème. Quand je me rends sur la page de rédaction de news, à la fin du texte de la news, ou du message "Rédiger une news.", j'ai deux petits carrés blans à bordure noires qui s'affichent systématiquement. Quelqu'un saurait-il comment les faire disparaitre?

                    Merci et au revoir.
                    • Partager sur Facebook
                    • Partager sur Twitter
                      29 décembre 2005 à 12:59:10

                      Alors pour les deux carré blanc à bordure noir j'ai eu le même problème, enfaite c'était une variable qui s'afficher anormalement, alors je l'ai mise entre des guillemets : "$variable"
                      Et bizarement sa marchait après :)
                      • Partager sur Facebook
                      • Partager sur Twitter
                      Anonyme
                        29 décembre 2005 à 20:16:01

                        Bonjour,

                        il semble que cela ne change rien, mais merci quand même pour tes nombreuses réponses ;) .
                        Quelqu'un aurait-il une autre idée?

                        Merci, au revoir.

                        PS: Si quelqu'un pouvait expliquer pourquoi il faut utiliser un echo dans un champ caché également cela serait gentil ;) . Merci.
                        • Partager sur Facebook
                        • Partager sur Twitter
                          29 décembre 2005 à 20:18:02

                          echo transmet juste une variable à l'HTML.

                          Faire un echo dans un champ value permet d'attribuer une value.
                          Après, si l'input en question est de type hidden, les règles s'appliquent: le champ et son contenu sont invisibles... (sauf via code source).


                          Lpu8er
                          • Partager sur Facebook
                          • Partager sur Twitter
                          Anonyme
                            29 décembre 2005 à 20:19:35

                            Bonjour,

                            merci de cette explication Lpu8er :) .

                            Au revoir.
                            • Partager sur Facebook
                            • Partager sur Twitter

                            Champ value d'un formulaire caché et UPDATE de la BDD

                            × 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