Partage
  • Partager sur Facebook
  • Partager sur Twitter

Variable Javascipt dans une base de donnée PHP

    15 juin 2022 à 20:59:13

    Bonjour,

    Je viens cherche de l'aide pour mon problème que je n'arrive ni a comprendre ni à résoudre.

    Je suis en train de créer un site web autour du shiny hunting de pokemon et mon but est de pouvoir enregistrer les pokemon shiny qu'on obtient.

    En gros le principe est que lorsqu'on se rend sur le site on peu se connecter ou se créer un compte, ce qui marche très bien ça, et après on peu se rendre sur une page où on peu cliquer sur un pokemon qu'on a eu en shiny et à ce moment la la case devient jaune et cela rempli une variable, False si le pokemon est cochez, true si il à été décochez et vide si il n'a jamais été cochez, exemple ci dessous.

    Ici Bulbizarre et Salameche on été cochez, herbizarre n'a jamais été cochez et enfin florizarre à été décochez.

    Mon problème est le suivant : j'ai un bouton save pour save mes pokemon qui me recharge la page avec dans l'URL le même tableau qu'affichez sur l'image (,false,,true,false), je peux le echo normalement avec un $_GET['issave'] mais je n'arrive pas à le rentrer dans ma base de donnée avec la requete ci jointe qui, pourtant, fonctionne si je rentre un nombre de ou mon tableau manuel et non avec la variable $_GET.

    Fonction PHP save avec la requete :

    function save()
    {
       $bdd = seConnecter();
       $requeteUpdate = 'UPDATE utilisateurs SET shnum='.$_GET['issave'].' WHERE pseudoUtilisateurs="'.$_SESSION['pseudo'].'"';
       $reponseUpdate = $bdd->query($requeteUpdate);
    }

    Mon script permettant de changer de couleur de fond lors du clique, créer le tableau et la fonction save de quand on clique sur le bouton :

    <script>
       var imgnum = [];
       <?php
       if ($connecte ==true){?>
       function changeColor1(mid) {
          if (!imgnum[mid]) document.getElementById("color" + mid).style.backgroundColor = "#2E3433";
          else document.getElementById("color" + mid).style.backgroundColor = "gold";
          imgnum[mid] = !imgnum[mid];
       }
       <?php
       }
       ?>
       function sauverList() {
          alert(imgnum);
          window.location.href = "http://localhost/sh/test.php?issave="+imgnum;
       }
    </script>



    Je précise que actuellement dans ma base de donnée, ce qui dois contenir l'information est un VARCHAR de 500 caractères max.

    Voila donc si quelqu'un sais comment faire pour que ma requête marche avec cette solution ou une autre je suis preneur.
    Ou alors si quelqu'un a une tout autre technique pour save qui n'utiliserai peut-être pas de javascript ou de $_GET (pour que se soit plus "propre" dans l'URL) je prend aussi.


    Deuxièmement j'aimerais savoir, car la pour le coup je n'ai aucune idée, si quelqu'un sais comment je pourrais faire le sens contraire c'est a dire que lorsque quelqu'un est connecté sur le site et se rend sur la page de ses pokemon trouvé, tout ce qu'il a déjà trouvé ai directement le fond en jaune, c'est a dire récupéré le tableau save dans la base de donné et le donné directement à la page.

    Merci d'avance à toute aide ou tentative d'aide :)

    -
    Edité par Ewox_ 15 juin 2022 à 21:53:07

    • Partager sur Facebook
    • Partager sur Twitter
      15 juin 2022 à 21:37:18 - Message modéré pour le motif suivant : La demande de l'équipe de modération a été honorée


      Pas d'aide concernant le code par MP, le forum est là pour ça :)

        16 juin 2022 à 3:28:44

        salut, tu as oublié les parenthèses sur la valeur dans le SET, tu devrais pouvoir voir les erreurs, mais je connais pas les gestions d'erreurs en php.

        Sinon, pour éviter l'url et le get, tu as "ajax", avec jquery tu charges le jquery dans la page, juste avant la fermeture de la balise head :

        <script src="https://code.jquery.com/jquery-3.6.0.js"
            integrity="sha256-H+K7U5CnXl1h5ywQfKtSj8PCmoN9aaq30gDh27Xc0jk="
            crossorigin="anonymous"></script>
        </head>



        tu utilises leur méthode ajax, tu mets POST comme façon d'envoyer, l'url d'une page php, les data à envoyer, et le success récupère ce que le php renvoie :

        $.ajax({
                type: "POST",
                url: "taPage.php",
               data: 'data='+lesdonnees,
               success: function(retour) {
                   alert("on récupère le résultat du php dans "+retour);
               }
           });

        ensuite dans la page php séparée, tu fais :

        $data = $_POST["data"]; //POST parce-qu'on a précisé la méthode post dans ajax
        
        //... le code qui change la bdd
        
        echo "ok"; //on renvoie le résultat à l'ajax, qui va arriver dans le paramètre "retour", 
        
        //tu peux utiliser $result et mettre $result = "ok" si le UPDATE a bien fonctionné, sinon $result = "non", 
        //et tu fais un if / else en js pour savoir ce que vaut "retour", retour contient ce qui est envoyé par le php avec le echo


        En faisant ça, tu n'as pas besoin de recharger la page, tout se fait en fond. 

        -
        Edité par Arthur222 20 juin 2022 à 12:39:44

        • Partager sur Facebook
        • Partager sur Twitter
          17 juin 2022 à 18:05:34

          « un VARCHAR de 500 caractères max. »

          Heu, non. Un VARCHAR contient maximum 255 caractères.

          Cordialement.

          • Partager sur Facebook
          • Partager sur Twitter
            20 juin 2022 à 11:29:30

            Arthur222 a écrit:

            salut, tu as oublié les parenthèses sur la valeur dans le SET, tu devrais pouvoir voir les erreurs, mais je connais pas les gestions d'erreurs en php.

            Sinon, pour éviter l'url et le get, tu as "ajax", avec jquery tu charges le jquery dans la page, tu utilises leur méthode ajax, tu mets POST comme façon d'envoyer, l'url d'une page php, les data à envoyer, et le success récupère ce que le php renvoie :

            $.ajax({
                    type: "POST",
                    url: "taPage.php",
                   data: 'data='+lesdonnees,
                   success: function(retour) {
                       alert("on récupère le résultat du php dans "+retour);
                   }
               });

            ensuite dans la page php séparée, tu fais :

            $data = $_POST["data"]; //POST parce-qu'on a précisé la méthode post dans ajax
            
            //... le code qui change la bdd
            
            echo "ok"; //on renvoie le résultat à l'ajax, qui va arriver dans le paramètre "retour", 
            
            //tu peux utiliser $result et mettre $result = "ok" si le UPDATE a bien fonctionné, sinon $result = "non", 
            //et tu fais un if / else en js pour savoir ce que vaut "retour", retour contient ce qui est envoyé par le php avec le echo


            En faisant ça, tu n'as pas besoin de recharger la page, tout se fait en fond. 

            Merci de ton aide, je vais aller me renseigner sur le Ajax mais je n'ai pas compris ce que tu dis sur les parenthèse pour mon SET, dans mes souvenirs et je n'ai jamais mis de parenthèses et ça marche très bien.

            • Partager sur Facebook
            • Partager sur Twitter
              20 juin 2022 à 12:38:27

              Pour les chiffres tu peux les mettre comme ça mais les lettres tu les mets entre parenthèses.
              • Partager sur Facebook
              • Partager sur Twitter

              Variable Javascipt dans une base de donnée PHP

              × 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