Partage
  • Partager sur Facebook
  • Partager sur Twitter

Problème update en AJAX

    14 juin 2018 à 1:58:14

    Bonjour à tous,

    Je m'arrache les cheveux depuis un bon moment pour faire une mise à jour de ma BDD en asynchrone. J'utilise des variables en get qui me dirigent sur une page php qui est sensée faire l'update d'un des champs de ma BDD.

    Seulement voilà, tout fonctionne, j'ai testé avec des console.log en cascade mais ma requête n'a aucun effet et ne génère aucune erreur du coup je pense que c'est un problème d'interprétation des données mais je suis paumé.

    Voilà le code JS qui traite la demande

    <script type="text/javascript">
    <!-- 
    
    function request(callback) {
        var xhr = getXMLHttpRequest();    
    
        xhr.onreadystatechange = function() {
            if (xhr.readyState == 4 && (xhr.status == 200 || xhr.status == 0)) {
                callback(xhr.responseText);
            }
        };
    
        var jsid = document.getElementById("varId").value;
        var jspub = document.getElementById("varPub").value;
    
        xhr.open("GET", "ajaxPub.php?jsid=" + jsid + "&jspub=" + jspub, true);
        xhr.send(null);
    }
    
    
    function readData(sData) {
        console.log(sData);
    }
    
    //-->
    </script>



    et la page php en charge de faire mon update

    header("Content-Type: text/plain");
    
    $jsid = (isset($_GET["jsid"])) ? $_GET["jsid"] : NULL;
    $jspub = (isset($_GET["jspub"])) ? $_GET["jspub"] : NULL;
    
    if(isset($jsid) && isset($jspub)){
        $jspdo = new PDO('mysql:host=localhost;dbname=artemis', 'root', '');
        $jspdo->exec("UPDATE artemis_objet SET publier='$jspub' WHERE id='$jsid'");
        echo 'ok';
    } else {
        echo "FAIL";
    }

    Si une âme charitable voulait se pencher sur mon problème, ce serait vraiment sympa !!

    Merci d'avance


    • Partager sur Facebook
    • Partager sur Twitter
      14 juin 2018 à 18:29:16

      Merci de ton retour Belzebuth !

      J'ai donc activé les erreurs et fait une requête préparée comme tu préconises

      header("Content-Type: text/plain");
      
      $jsid = (isset($_GET["jsid"])) ? $_GET["jsid"] : NULL;
      $jspub = (isset($_GET["jspub"])) ? $_GET["jspub"] : NULL;
      
      if(isset($jsid) && isset($jspub)){
          $jspdo = new PDO('mysql:host=localhost;dbname=artemis', 'root', '',
          array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));
          $sql = "UPDATE artemis_objet SET publier='$jspub' WHERE id='$jsid'";
          $reqjs =  $jspdo->prepare($sql);
          $reqjs->execute();
          echo 'ok';
      } else {
          echo "FAIL";
      }



      J'appelle la fonction request avec la fonction callback readData sur un evenement onClick sur une balise <a>.

      <a href="#" onclick="request(readData);">



      En fait j'ai suivi l'exemple disponible ici mais ça ne s'applique pas à mon cas. Il doit y avoir un moyen plus simple mais je ne maitrise pas encore la logique d'Ajax..

      -
      Edité par Nocif102 14 juin 2018 à 18:52:02

      • Partager sur Facebook
      • Partager sur Twitter
        15 juin 2018 à 23:45:49

        Personne pour m'aiguiller un peu?
        • Partager sur Facebook
        • Partager sur Twitter

        Problème update en AJAX

        × 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