Partage
  • Partager sur Facebook
  • Partager sur Twitter

UPDATE une bdd via un formulaire

Syntaxe Update where

Sujet résolu
    23 mai 2018 à 17:35:43

    Bonjour,

    je galère pour traiter la commande de l'update pour un formulaire simple sur quelques champs dans la base de donnée. J'avoue que c'est toujours difficile pour moi d'écrire les commandes, ca ne passe jamais du premier coup. et quand ça passe, après moult essais, je prends note mais je ne sais pas toujours pourquoi.

    Pourriez vous m'aider pour mon update. Sois en prépare soit en execute ?

              <link rel="stylesheet" type="text/css" href="style_inter_ins.css" />
            <!--<p><a href="formulaire_inter.php">Retour aux formulaires de recherche et d'insertion</a></p>-->
            <?php
            // Connexion à la base de données
            try
            {
                $bdd = new PDO('mysql:host=localhost;dbname=test_ocr;charset=utf8', 'root', 'root');
            }
            catch(Exception $e)
            {
                die('Erreur : '.$e->getMessage());
            }
    
    
    foreach ($_POST as $key => $value)  {
        echo "P".$key."=".$value."<br />";
    }       
     // Modification  
    if (isset($_POST['modifier']))
     {
         
    //requete update sql
    $id_saisine=$_POST['id_saisine'];
      $req = $bdd-> prepare('UPDATE saisines SET numero_saisine = ?, 
                                                 date_saisine = ?, 
                                                 nom_intervenant = ?, 
                                                 objet_saisine = ?, 
                                                 statut = ?,
                                             WHERE id_saisine = $id_saisine');
      $req->execute(array($_POST['date_saisine'],
                         $_POST['nom_intervenant'],
                         $_POST['objet_saisine'],
                         $_POST['date_limite'],
                         $_POST['statut']));
       echo 'La saisine '.$id_saisine.'a bien été modifiée !';
     
    //or die(mysql_error());        
    include ("formulaire_inter.php");
    }
    ?>
    

    Le problème est qu'il me dit que la saisine a bien étét modifiée mais rien ne se passe dans la BDD.

    Je desespère.

    Merci

    • Partager sur Facebook
    • Partager sur Twitter
      23 mai 2018 à 17:39:52

      Salut,

      Le problème vient d'une erreur de syntaxe dans ta requête, avant le WHERE il n'y a jamais de virgule (,). 

      'UPDATE saisines SET numero_saisine = ?, date_saisine = ?, nom_intervenant = ?, objet_saisine = ?, statut = ? WHERE id_saisine = $id_saisine;'


      De plus, il y a un problème de concaténation dans cette même requête. Tu peux pas concaténer de variable dans une chaîne à simple guillemet (').

      D'ailleurs, pourquoi ne pas mettre l'identifiant comme valeur préparé ? 

      Enfin, ACTIVE LES ERREURS PHP ET PDO ! tu aurais trouvé l'erreur en 2s !

      -
      Edité par HekoHello 23 mai 2018 à 17:40:25

      • Partager sur Facebook
      • Partager sur Twitter
        23 mai 2018 à 17:53:23

        Merci. Les erreurs ont été activées dès le début des cours sur OCR. Je vais tester en retirant la , et en essayant de modifier la concaténation.

        EN fait ca ne change pas. D'ailleurs, je viens remarquer un truc :

        Lorsque je clique sur un des resultat l'id de ma saisine est bien transmis via l'url et les champs du formulaire de modification sont bien incrémentés par les valeurs concernées. Mais dès que je modifie quelque chose et que j'envoie via le "modifier", la valeur "id" que je fais afficher par la premiere formule (celle du $key) et dans la phrase echo "la saisine n° a bien été modifiée... ben l'idée est à +10. Je m'explique, j'ai transmis via l'url l'id 9, les champs remplis correspondent bien à cet id et lorsque la nouvelle page s'affiche il me parle de la 19. qui de toutes les façons n'est pas modifiée dans la bdd.

        GRRRRR

        • Partager sur Facebook
        • Partager sur Twitter
          23 mai 2018 à 18:46:28

          Bonsoir,

          NON tu n'as activés les erreurs PDO (cf ma signature)

          De plus si tu passes par l'url pour l'id alors ce n'est pas $_POST mais $_GET pour ton id

          -
          Edité par Aurélien10! 23 mai 2018 à 18:48:05

          • Partager sur Facebook
          • Partager sur Twitter
            23 mai 2018 à 19:50:13

            Bonsoir Aurélien. merci.

            En fait j'avais des fatal error et des mauvaise synthaxe avec des ' et de " qui semblaient mal placés sur certaines lignes mais maintenant il ne les affiche plus... pour autant la bdd n'en est pas plus modifiée.

                      <link rel="stylesheet" type="text/css" href="style_inter_ins.css" />
                    <!--<p><a href="formulaire_inter.php">Retour aux formulaires de recherche et d'insertion</a></p>-->
                    <?php
                    // Connexion à la base de données
                    try
                    {
                        $bdd = new PDO('mysql:host=localhost;dbname=test_ocr;charset=utf8', 'root', 'root');
                    }
                    catch(Exception $e)
                    {
                        die('Erreur : '.$e->getMessage());
                    }

            C'est pas ça activer les Erreurs ? C'est ce qui était précisé sur les OCR en début du cours de Mathieu Nebra?

            Excuse mais je ne comprends pas tout...

            En ce qui concerne l'url, oui, l'id est transmis dans le formulaire par un get afin de remplir automatiquement les champs :

                    <?php
                    // Connexion à la base de données
                    try
                    {
                        $bdd = new PDO('mysql:host=localhost;dbname=test_ocr;charset=utf8', 'root', 'root');
                    }
                    catch(Exception $e)
                    {
                        die('Erreur : '.$e->getMessage());
                    }
                    // initialisation des variables POST
                    $id_saisine = "";
                    $numero_saisine    =   "";
                    $date_saisine = "";
                    $nom_intervenant = "";
                    $objet_saisine = "";
                    $date_limite = "";
                    $statut    =   "";
            
                if (isset($_GET['id']))
                    {
                
                    $reponse= $bdd -> query("SELECT * FROM saisines WHERE id_saisine = ".$_GET['id']."");
            
                    while ($donnees = $reponse ->fetch())
                        {
                        echo "<h4> \"ID\" de la saisine à modifier : "  .$donnees['id_saisine']. "</h4>";  
                        $id_saisine = $donnees['id_saisine'];       
                        //echo "<br>numero de la saisine : " .$donnees['numero_saisine']. "<br />";
                        $numero_saisine = $donnees['numero_saisine'];
                        //echo "<br>date de la saisine : " .$donnees['date_saisine']. "<br />";
                        $date_saisine = $donnees['date_saisine'];
                        //echo "<br>nom de l'intervenant : " .$donnees['nom_intervenant']. "<br />";
                        $nom_intervenant = $donnees['nom_intervenant'];
                        //echo "<br>objet : " .$donnees['objet_saisine']. "<br />";
                        $objet_saisine = $donnees['objet_saisine'];
                        //echo "<br>date de réponse attendue : " .$donnees['date_limite']. "<br />";
                        $date_limite = $donnees['date_limite'];
                        //echo "<br>statut de la saisine : " .$donnees['statut']. "<br />";
                        $statut = $donnees['statut'];
                        if(strlen($donnees['piece_jointe'])>0)
                                            {
                                            echo "<a href='uploads/".$donnees['piece_jointe']."'class=id_formulaire target='_blank'>";
                                            echo "<img src='images/pj.png' width='2%'/>";
                                            echo "</a>";
                                            }
                                            else
                                            {echo "- Aucune pièce-jointe liée à cette saisine -";} ;
                        }
                    }
            ?>
                    <fieldset>
                        <h3>Inscrivez ici les éléments qui composent votre nouvelle saisine </h3> 
                        <!--<p> <h2>Inscrivez ici les éléments qui composent votre nouvelle saisine <h2></p>-->
            
                         <form method="post" action="req_modif_inter.php" ENCTYPE="multipart/form-data">
                            <input type="hidden" name="id_saisine" value="1<?php echo $id_saisine; ?>"/><label for= "id_saisine"></label>
                            <input type="text" name="numero_saisine" placeholder="numéro de saisine" required value="<?php echo $numero_saisine; ?>"/><label for= "numero_saisine"></label>
                            <input type="date" name="date_saisine" placeholder="date de saisine" required value="<?php echo $date_saisine; ?>"/><label for= "date_saisine"></label>
                            <input type="text" name="nom_intervenant"  placeholder="nom de l'intervenant" required value="<?php echo $nom_intervenant; ?>"/><label for= "nom_intervenant"></label>
                            <input type="text" name="objet_saisine" class= "objet_saisine" placeholder="objet de la saisine" requiered value="<?php echo $objet_saisine; ?>"/><label for= "objet_saisine" ></label>
                            <input type="date" name="date_limite" placeholder="numéro limite de réponse" value="<?php echo $date_limite; ?>"><label for= "date_limite" /></label><br />
                            <div class="div1"><h5>Indiquez le statut de votre saisine :</h5><br />
                            <input type="radio" name="statut" id="en_cours" value="en_cours"<?php
                            if ($statut == "en_cours") { echo "checked=checked"; }
                            ?>/> <label for="en_cours">En Cours</label><br />
                            <input type="radio" name="statut" id="waiting_4" value="attente" <?php
                            if ($statut == "attente") { echo "checked=checked"; }
                            ?>/> <label for="waiting_4">En attente d'éléments</label><br />
                            <input type="radio" name="statut" id="end_saisine" value="traite" <?php
                            if ($statut == "traite") { echo "checked=checked"; }
                            ?>/> <label for="end_saisine">Traité</label>
                            </div>
                           
                           
                      </fieldset>   
                           
                            <input class="button" type="submit" value="modifier" name="modifier"  />
                            <!--<input class="button" type="reset" value="Réinitialiser"/>-->
                        </form>
            

            Et ensuite mon formulaire _POST vers ma requete PHP... qui du coup ne fonctionne pas ;-)

            En fait j'avais des fatal error et des mauvaise synthaxe avec des ' et de " qui semblaient mal placés sur certaines lignes mais maintenant il ne les affiche plus... pour autant la bdd n'en est pas plus modifiée.




            -
            Edité par MélissaWillemin 24 mai 2018 à 5:03:26

            • Partager sur Facebook
            • Partager sur Twitter
              23 mai 2018 à 20:37:06

              Bonsoir,

              J'avais un problème similaire sur un formulaire d'inscription et aucune erreur ne s'affichait, pour ma part l'erreur venait de ma table dans ma BDD vérifie bien si tout correspond parfaitement et n'oublie pas l'AUTO-INCREMENT pour les id.

              -
              Edité par Max Imus 23 mai 2018 à 20:37:52

              • Partager sur Facebook
              • Partager sur Twitter
                24 mai 2018 à 4:51:33

                Bonjour Johan,

                la bdd est bonne. je suis dessus depuis une dizaine de jours et jouant avec les requetes de mon formulaires. Je peux insérer, rechercher, visualiser mais en ce qui concerne la modification... nada.

                Est-ce que tu vois quelque chose dans mon code qui bloque ? Si je passe en direct par execute ?

                Modificatif 5h35:

                Bonjour à tous. Ca y est ca fonctionne. En ce qui concerne le +10 j'au re-épluché mon code de formulaire et dans le champs qui devait récupérer les données il y a avait un 1 qui trainait.

                Ensuite pleine d'espoir j'ai fait quelques modifs dans la commande de l'update et miracle ça fonctionne.

                Je le laisse au cas où si ça peut aider quelqu'un ou si quelqu'un souhaite me le modifier ...

                Merci de votre patience.

                $id_saisine=$_POST['id_saisine'];
                if (isset($_POST['modifier']))
                 {   
                //requete update sql
                $req = $bdd-> prepare("UPDATE saisines SET   numero_saisine = ?, 
                                                             date_saisine = ?, 
                                                             nom_intervenant = ?, 
                                                             objet_saisine = ?,
                                                             date_saisine = ?, 
                                                             statut = ?
                                                       WHERE id_saisine = ".$id_saisine."");
                 $req->execute(array($_POST['numero_saisine'],
                 					 $_POST['date_saisine'],
                                     $_POST['nom_intervenant'],
                                     $_POST['objet_saisine'],
                                     $_POST['date_limite'],
                                     $_POST['statut']));
                
                 echo "La saisine ".$id_saisine."a bien été modifiée !";
                
                
                include ("formulaire_inter.php");
                }
                



                -
                Edité par MélissaWillemin 24 mai 2018 à 5:39:08

                • Partager sur Facebook
                • Partager sur Twitter

                UPDATE une bdd via un formulaire

                × 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