Partage
  • Partager sur Facebook
  • Partager sur Twitter

Insertion de données en Base avec AJAX

    3 septembre 2018 à 0:23:54

    Bonjours, j'ai un soucis (surement une broutille dont vous aller trouver la solution en quelques secondes) avec l'envoi de données en Base avec AJAX.

    Je vous joins le premier bout de code en AJAX qui gère l'envoi :

    function RequestSendFormCreate() {
    
        xhr.onreadystatechange = function () {
            if (xhr.readyState === 4 && (xhr.status === 200 || xhr.status === 0)) {
                callback(xhr.responseText);
            }
        };
    
        var Statut = "Manager";
        var Pseudo = encodeURIComponent(document.getElementById("pseudo").value);
        var Password = encodeURIComponent(document.getElementById("password").value);
    
        xhr.open("GET", "Ajax/SendDataCreate.php?Statut=" + Statut + "&Pseudo=" + Pseudo + "&Password=" + Password, true);
        xhr.send(null);
    }


    L'objet xhr est initialisé en global en haut du fichier (et fonction sur d'autre fonction AJAX).

    J’envoie donc les données via un GET (je ne sais pas faire en POST, éventuellement si quelqu'un peu m'éclairer la dessus je dis pas non).

    Je vous joins le code PHP qui gère l'insertion en base :

    <?php
    	
    	session_start();
    	require_once '../vendor/autoload.php';
    	include '../Functions/Functions.php';
    	include '../src/Formulaire.php';
    	
    	$csrf = new App\Csrf();
    	$usersManager = new App\UsersManager();
    	
    	if ($csrf->verifyToken("csrf", "index.php")) {
    		if (isset($_GET['Statut']) && isset($_GET['Pseudo']) && isset($_GET['Password'])) {
    			if (!empty($_GET['Statut']) && !empty($_GET['Pseudo']) && !empty($_GET['Password'])) {
    				
    				$statut = $_GET["Statut"];
    				$pseudo = $_GET["Pseudo"];
    				$password = $_GET["Password"];
    				
    				$createAccount = new App\Users(['Statut' => $statut,
    					'Pseudo' => $pseudo,
    					'Password' => md5($password)]);
    				
    				$usersManager->createAccount($createAccount);
    			}
    		}
    	}


    Malheureusement rien n'arrive en Base, je vous avoue ne pas comprendre pourquoi, n'ayant fais que très peu de JS et encore moins d'AJAX je suis un peu largué, si on peu m’éclairer je serai ravi !

    Je tiens à préciser que ça ne peu pas venir de ma fonction "createAccount" (dans l'usersManager) car fonctionnel en test via uniquement du code PHP.

    Merci d'avance pour votre aide, je suis bloqué de chez bloqué :)

    • Partager sur Facebook
    • Partager sur Twitter
      3 septembre 2018 à 1:08:11

      Salut, à quoi correspond ta fonction callback en ligne 5 ? De plus, réinitialises plutôt ton object xhr à chaque début de la fonction.
      • Partager sur Facebook
      • Partager sur Twitter
      Développeur Front-End freelance disponible pour contrats ! En guerre contre l'utilisation abusive de jQuery.
        3 septembre 2018 à 1:22:05

        darenju a écrit:

        Salut, à quoi correspond ta fonction callback en ligne 5 ? De plus, réinitialises plutôt ton object xhr à chaque début de la fonction.


        callback correspond au passage de read data :

        $formulaireCreateAccount->inputText("","","button","","Create","","","RequestSendFormCreate(readDataSend)");

        je génère les formulaire via PHP, je passe le request dans le onclick (on ne le vois pas ici avec les "").

        J'ai fait un test sur la lecture et AJAX récupère bien les valeur des input et du select, la où ça coince c'est sur l'envoi en BDD.

        C'est à dire que quand j'enlève toute la partie d'envoi en BDD, AJAX me retourne bien en alert les valeur passé dans les input.

        <?php
        	
        	header("Content-Type: text/plain");
        
        	if ($statut && $pseudo && $password) {
        		echo "Statut : {$statut} / Pseudo : {$pseudo} / Password : {$password}";
        	}

        Le echo est bien retourné dans le alerte et traité comme il ce doit :



        Les info passe donc bien dans le GET, mais ne veulent pas partir en base

        • Partager sur Facebook
        • Partager sur Twitter
          3 septembre 2018 à 2:11:39

          Dans ce cas c'est au niveau du traitement que ton PHP fait. On dirait que tu ne précises pas de token dans ta requête AJAX, or, c'est la première condition de ton script. Regardes peut-être à ce niveau.
          • Partager sur Facebook
          • Partager sur Twitter
          Développeur Front-End freelance disponible pour contrats ! En guerre contre l'utilisation abusive de jQuery.
            4 septembre 2018 à 19:28:23

            darenju a écrit:

            Dans ce cas c'est au niveau du traitement que ton PHP fait. On dirait que tu ne précises pas de token dans ta requête AJAX, or, c'est la première condition de ton script. Regardes peut-être à ce niveau.


            tout à fait, je m'en suis rendu compte dans la nuit, une erreur bête d'inattention ou de fatigue je ne sais pas mais c'est corriger :) merci
            • Partager sur Facebook
            • Partager sur Twitter

            Insertion de données en Base avec 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