Partage
  • Partager sur Facebook
  • Partager sur Twitter

Confimation que ajax a bien fonctionner

    28 mars 2020 à 10:59:21

    Bonjour,

    J'ai fait un formulaire avec ajax qui me permet d’insérer des éléments dans ma base de donnée. Je souhaiterais que lorsque l'insertion se fait bien afficher un pop up pour dire que l'insertion a bien été faite. Je pense qu'il faudrait mettre une variable dans la page php appelé qui sera retourner si tout se passe bien.Je ne sais pas trop comment faire. 

    Mon Formulaire

                  <div class="container ">
                    <div class="jumbotron" >
                      <form id="InsertionReglement"  action="ajaxinfo.php" method="post">
                        <label for="exampleFormControlTextarea1">Saisir ou remplacer le réglement</label>
                        <textarea name="contenueReglement"class="form-control" id="exampleFormControlTextarea1" rows="3"></textarea>
                      <input type="submit"   value="Valider">
                     </form>
                     <form id="Insertiondate" action="ajaxinfo.php" method="post">
                       <input type="date" class="form-control"  name="dateDebut" placeholder="jj/mm/aaaa"required>
                       <input type="date" class="form-control"  name="dateFin" placeholder="jj/mm/aaaa"required>
                       <input type="submit"  value="Valider">
                     </form>
                    </div>
    
    Mon JS 
                  $("#InsertionReglement").on('submit',(function(e) {
                      e.preventDefault();
                      $.ajax({
                        url: "ajaxinfo.php",
                        type: "POST",
                        data: new FormData(this),
                        contentType: false,
                        cache: false,
                        processData: false,
                      });
                    }));
                    $("#Insertiondate").on('submit',(function(e) {
                        e.preventDefault();
                        $.ajax({
                          url: "ajaxinfo.php",
                          type: "POST",
                          data: new FormData(this),
                          contentType: false,
                          cache: false,
                          processData: false,
                        });
                      }));
    

    Ma page ajaxinfo.php

    <?php session_start();
    $reglement="";
    $idutil="";
    if(isset($_SESSION["ID"]))
    {
      $idutil=$_SESSION["ID"];
      $con = mysqli_connect('*****','*****','*****','******');
      if (isset($_POST["contenueReglement"]))
      {
        $req ="SELECT id_util FROM concours";
        $res=mysqli_query($con,$req);
    
        $reglement=$_POST["contenueReglement"];
        $nbLigneRetourne=mysqli_num_rows($res);
        if ($nbLigneRetourne===0)
        {
          $req ="INSERT INTO concours(reglement,id_util) VALUES ('$reglement','$idutil')";
          $res=mysqli_query($con,$req);
        }
        if ($nbLigneRetourne===1) {
          $req="UPDATE CONCOURS SET reglement ='$reglement', id_util='$idutil'";
          $res=mysqli_query($con,$req);
    
        }
    
      }
      if (isset($_POST["dateDebut"]) && isset($_POST["dateFin"]))
      {
        $datedebut=$_POST["dateDebut"];
        $datefin=$_POST["dateFin"];
        $req ="SELECT id_util FROM concours";
        $res=mysqli_query($con,$req);
        $nbLigneRetourne=mysqli_num_rows($res);
        if ($nbLigneRetourne==0)
        {
          $req ="INSERT INTO concours(date_debut,date_fin,id_util) VALUES ('$datedebut','$datefin','$idutil')";
          $res=mysqli_query($con,$req);
        }
        if($nbLigneRetourne==1)
        {
          $req="UPDATE CONCOURS SET date_fin ='$datefin', date_debut='$datedebut'";
          $res=mysqli_query($con,$req);
        }
    
      }
    }
    
    
    ?>
    

    Merci d'avance pour votre aide 

    -
    Edité par YaourtSaveurFraise 28 mars 2020 à 11:00:16

    • Partager sur Facebook
    • Partager sur Twitter
      28 mars 2020 à 11:10:36

      TU peux retourner le retour de mysqli_query() de l'insertion => voir le doc "Valeur de retour"
      • Partager sur Facebook
      • Partager sur Twitter
        28 mars 2020 à 11:32:53

        Passer par ajax ne te dispense pas de protéger tes données : tu dois les échapper sinon préparer tes requêtes. Tes requêtes vont planter sur les ' et on peut tenter des injections SQL.

        Il ne manque pas des clauses WHERE à toutes tes requêtes ?

        Bref, il faut que ton script echo quelque chose en fonction de ce que mysqli_query renvoie comme l'indique christouphe et que tu utilises la "callback" success de $.ajax (ou la promise done)

        -
        Edité par julp 28 mars 2020 à 11:34:29

        • Partager sur Facebook
        • Partager sur Twitter
          28 mars 2020 à 11:46:26

          julp a écrit:

          Passer par ajax ne te dispense pas de protéger tes données : tu dois les échapper sinon préparer tes requêtes. Tes requêtes vont planter sur les ' et on peut tenter des injections SQL.

          Il ne manque pas des clauses WHERE à toutes tes requêtes ?

          Bref, il faut que ton script echo quelque chose en fonction de ce que mysqli_query renvoie comme l'indique christouphe et que tu utilises la "callback" success de $.ajax (ou la promise done)

          -
          Edité par julp il y a 7 minutes

          bah les seules personnes qui auront accès à cette page sont les administrateur ( que j'identifie avec un Grade enregistrer en session). Comme ils ne pourront pas accéder aux formulaire c'est bon non ?

          christouphe a écrit:

          TU peux retourner le retour de mysqli_query() de l'insertion => voir le doc "Valeur de retour"



          elle est où cette doc ?

          • Partager sur Facebook
          • Partager sur Twitter
            28 mars 2020 à 11:49:22

            > Comme ils ne pourront pas accéder aux formulaire c'est bon non ?

            Ce n'est pas qu'une question de sécurité : une ' et tes requêtes plantent ! Pourquoi vous vous cherchez toujours des excuses pour ne pas faire les choses 100% correctement et fonctionnelles comme ça aurait dû être fait et pensé dès le départ ? Ca te coûte quoi de rajouter/mettre des mysqli_real_escape_string ?

            > elle est où cette doc ?

            C'est une blague ? mysqli_query :roll:

            > Valeurs de retour

            Retourne FALSE en cas d'échec. Pour des requêtes SELECT, SHOW, DESCRIBE ou EXPLAIN réussies, mysqli_query() retournera un objet mysqli_result. Pour les autres types de requêtes ayant réussi, mysqli_query() retournera TRUE.

            -
            Edité par julp 28 mars 2020 à 11:53:47

            • Partager sur Facebook
            • Partager sur Twitter
              28 mars 2020 à 11:54:13

              julp a écrit:

              > elle est où cette doc ?

              C'est une blague ? mysqli_query :roll:

              -
              Edité par julp il y a moins de 30s


              Il m'a scié là :D
              • Partager sur Facebook
              • Partager sur Twitter
                28 mars 2020 à 13:30:58

                julp a écrit:

                > Comme ils ne pourront pas accéder aux formulaire c'est bon non ?

                Ce n'est pas qu'une question de sécurité : une ' et tes requêtes plantent ! Pourquoi vous vous cherchez toujours des excuses pour ne pas faire les choses 100% correctement et fonctionnelles comme ça aurait dû être fait et pensé dès le départ ? Ca te coûte quoi de rajouter/mettre des mysqli_real_escape_string ?

                > elle est où cette doc ?

                C'est une blague ? mysqli_query :roll:

                > Valeurs de retour

                Retourne FALSE en cas d'échec. Pour des requêtes SELECT, SHOW, DESCRIBE ou EXPLAIN réussies, mysqli_query() retournera un objet mysqli_result. Pour les autres types de requêtes ayant réussi, mysqli_query() retournera TRUE.

                -
                Edité par julp il y a environ 1 heure

                 J'avais simplement oublier l'histoire du ' qui faisait planter le code ( je cherchais pas d'excuse je posais une question ( d'où le "?")  

                la question que je me posais initialement c'était comment faire passer le résultat de la requête.

                ( pas besoin de rajouter de la condescendance merci ) 



                -
                Edité par YaourtSaveurFraise 28 mars 2020 à 13:33:53

                • Partager sur Facebook
                • Partager sur Twitter
                  28 mars 2020 à 13:35:30

                  Utilise JSON, MAIS il faudra toujours utiliser echo ton JS "lis" ce que PHP lui donne.
                  • Partager sur Facebook
                  • Partager sur Twitter
                    28 mars 2020 à 15:45:55

                    Je ne comprends toujours pas ton code : il n'y a aucun WHERE nulle part ! Il n'y a qu'un concours ?

                    Il n'y a aucune validation non plus (notamment sur les dates).

                    Il y a une autre façon d'aborder ta question d'ailleurs : tu lèves une 500 si l'insertion foire comme ça, au niveau de $.ajax, si ça plante, tu passes sur la callback d'error contre success sinon. Il suffit même de mettre un mysqli_report dans ce cas.

                    Quoi que tout dépend de la définition de "lorsque l'insertion se fait bien" si on entend par là requête qui plante ou non contre requête qui n'a rien inséré au sens l'insertion a été annulée pour doublon ou autre si un trigger avorte la requête (sans réelle erreur pour autant niveau SQL).

                    -
                    Edité par julp 28 mars 2020 à 17:03:59

                    • Partager sur Facebook
                    • Partager sur Twitter
                      28 mars 2020 à 16:56:12

                      Bonjour.

                      C'est vrai que la clause WHERE manque, pour plusieurs des requêtes on ne peux pas trop le savoir, par contre pour les deux requêtes de type UPDATE, il manque forcément la clause WHERE.

                      • Partager sur Facebook
                      • Partager sur Twitter

                      Face a quelqu'un pour qui l'on n'éprouve que de l'aversion et du mépris, les yeux d'un homme deviennent extrêmement froids et cruels.

                        29 mars 2020 à 15:04:32

                        julp a écrit:

                        Je ne comprends toujours pas ton code : il n'y a aucun WHERE nulle part ! Il n'y a qu'un concours ?

                        Il n'y a aucune validation non plus (notamment sur les dates).

                        Il y a une autre façon d'aborder ta question d'ailleurs : tu lèves une 500 si l'insertion foire comme ça, au niveau de $.ajax, si ça plante, tu passes sur la callback d'error contre success sinon. Il suffit même de mettre un mysqli_report dans ce cas.

                        Quoi que tout dépend de la définition de "lorsque l'insertion se fait bien" si on entend par là requête qui plante ou non contre requête qui n'a rien inséré au sens l'insertion a été annulée pour doublon ou autre si un trigger avorte la requête (sans réelle erreur pour autant niveau SQL).

                        -
                        Edité par julp il y a environ 20 heures

                        Il n'y aura toujours qu'un seul concours c'est pour ça que je ne me prend pas la peine de mettre de clause where.

                        Ensuite c'est quand l'insertion d'un nouveau règlement ou la mise à jour de celui ci se fait correctement que je considère que tout c'est bien effectué.

                         J'ai vue qu'on pouvait mettre un fonction success en ajax mais je sais pas comment ça marche je vais chercher ça . 

                        • Partager sur Facebook
                        • Partager sur Twitter
                          30 mars 2020 à 18:22:49

                          en ajax on peut avoir une valeur de retour grâce au 
                          .done(function() {
                            $( this ).addClass( "done" );
                          });

                          ducoup il faudrait cibler certains éléments echo sur ma page ajax pour connaitre leurs valeurs ( savoir si les requête sont bonne ducoup).

                          Après je sais pas trop à quoi correspond this 

                          • Partager sur Facebook
                          • Partager sur Twitter

                          Confimation que ajax a bien fonctionner

                          × 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