Partage

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


Vous êtes demandeur·se d'emploi ?
Sans diplôme post-bac ?

Devenez Développeur·se web junior

Je postule
Formation
courte
Financée
à 100%
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

15 juin 2018 à 23:45:49

Personne pour m'aiguiller un peu?

Problème update en AJAX

× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
  • Editeur
  • Markdown