Bonjour

je voudrais votre aide car je ne sais pas comment faire.

j'ai un fichier games.php et un fichier select.php.

dans mon fichier select.php j'ai une "<form" qui ce trouve dans une boucle avec une checkbox et je voudrais qu'elle m'envoie 0 si elle n'est pas coché et 1 si elle est coché dans ma bdd.

Mais je voudrais qu'il s'envoie tout seul lorsque je click sur ma checkbox .

mon select.php (ou il y a mon checkbox ):

<form action="" method="post" name="theForm" id="theForm">
        <div class="slideThree" value="'.$row["id_users_category"].'">   
            <input type="hidden" value="0" name="recrute">
            <input onChange="autoSubmit();" style="visibility: hidden" type="checkbox" value="1" id="slideThree'.$row["id_users_category"].'" class="rect" name="recrute"  />
            <label id="label" for="slideThree'.$row["id_users_category"].'"></label>
        </div>
</form>

dans ma page games.php ( ou j'esseye d'envoyer ma checkbox) :

function autoSubmit()
      {
        var formObject = document.forms['theForm'];
        formObject.submit(); 

        var rect = $('.rect').name();
        var slideThree = $('.slideThree').val(); 

            $.ajax({ 
                url:"includes/games/edit3.php", 
            method:"POST", 
            data:{rect:rect, slideThree:slideThree},  
                dataType:"text", 
                success:function(data){ 
                    fetch_data();
                } 
            }); 
      }

mon fichier edit3.php (qui envoie normalement tout dans ma bdd) :

$connect = mysqli_connect("localhost", "root", "", "sgamer");   //connection
$datetime = date("Y-m-d H:i");
$sql = "UPDATE users_category SET recherche ='".$_POST["rect"]."' , date_add ='".$datetime."' WHERE id_users_category='".$_POST["slideThree"]."'";  //modifie 0 ou 1 dans recherche

if(mysqli_query($connect, $sql)) 
    { 
        echo 'modifier'; 
    }

Voila j'avais ésséyé ceci mais je ne suis absolument pas sur de ce que je fait et si c'est comme ca qu'il faut faire.
lorsque je click sur ma checkbox elle rafraichit bient ma page juste apres, mais ca ne modifie rien dans ma bdd, ca n'envoie rien.

merci de votre aide

9 réponses


Mehdikacim
Réponse acceptée

tu fais une condition si le rang de l'utilisateur ne correspond pas tu n'affiche pas la checkbox car le souci c'est que tu peux modifier avec l'inspecteur d'éléments la propriété readonly

tes données envoyées doivent être sous la forme clé=valeur comme dans une url
pour convertir ton objet json en texte il y a l'option
processData : true
ça indique que les données en entrée doivent être converties de json à chaine de paires clé=valeur

Edit: si tu utilises ajax pour envoyer tes données, il ne faut pas submit ton formulaire
Pour lire les valeurs du formulaire il faut lire la propriété 'value'
document.getElementById('rect').value
en jQuery $('#rec').val

il y d'autres erreurs ...

bonsoir

J'y suis arrivé comme ceci :
dans mon premier fichier principal games.php

                 $(document).on('click', '.seek', function() {

                      var rect = $(this).data("id5");        // récupere id games
                      var recherche = $(this).data("id8");  // récupere valeur 1
                      var val1 = $(this).data("id6");  // récupere valeur 1
                      var val0 = $(this).data("id7"); // récupere valeur 0
                          if(recherche >= 1)   {

                            $.ajax({  
                              url:"includes/games/edit3.php",  
                              method:"POST",  
                              data:{rect:rect, val0:val1},   
                              dataType:"text",  
                              success:function(data){ 
                                fetch_data();
                                $('.seek').addClass("on");
                                    }  
                              } ); 
                            }   else if(recherche < 1) {

                            $.ajax({  
                              url:"includes/games/edit3.php",  
                              method:"POST",  
                              data:{rect:rect, val1:val1},   
                              dataType:"text",  
                              success:function(data){ 

                                fetch_data();
                                  }  
                              });

                            }

                });

et dans mon fichier select.php

<div>
          <label class="seek" id="seek" data-id5="'.$row["id_users_category"].'"  data-id6="1" data-id8="'.$row["recherche"].'" data-id7="0" ><i class="fas fa-power-off"></i></label>
          <span class="seek-span" >
                    <input  type="checkbox" style="visibility:hidden" id="seek" '.(($row["recherche"] == 1) ? 'checked="checked" ' : '').'></input>
           </span>
</div>

seulement je voudrais savoir si c'etait possible et comment faire en sorte que jquery ajoute ma class "on" lorsque ma recherche est = 1, et qu'il me la retire lorsque elle est = 0.
j'ai éssayé d'ajouter

$('.seek').addClass('on');

ou

$('.seek').toggleClass('on');

mais il ne rest pas.

merci

Bonjour,

Tout d'abord tu pourrais utiliser $.post au lieu de $.ajax comme ceci

$.post(
                    'includes/games/edit3.php', 
                    {
                        rect:rect, 
                        val1:val1
                    }, 
                    function(response) {
                        // Traitement en fonction de la réponse.
                    }, 
                    'json' //On attend un résultat au format JSON
                );

Ensuite pour détecter le click sur un checkbox tu peux utiliser la fonction change de jQuery, ensuite pour savoir si elle est coché ou non tu peux utiliser la fonction is avec :checked comme ceci :

var checked = 0;
if($('#checkbox').is(":checked")){
checked = 1;
    //Si la checkbox est coché on renvoit une variable checked à 1
}
// On ne met pas de else dans le cas où elle n'est pas coché vu que la variable est défini au dessus.

Ensuite tu n'a plus qu'à récupéré la variable checked pour la mettre dans ta requête ajax.

EDIT : Comme l'a souligné Huggy, Mysqli est encore utilisable, aujourd'hui tu peux utiliser sois PDO sois Mysqli en fonction de ce que tu as besoin
PDO ne supportant que MySQL, mysqli qui lui supporte plusieurs SGBD.

Quelques liens qui pourrait t'être utile :

@Laznet tu t'avances un peu en disant que mysqli est obsolète, ton lien ne montre que quelques fonctions obsolètes mais souvent supprimées depuis php5.3
Au contraire mysqli est plus puissant que PDO car vraiment dédié à MySQL contrairement à PDO qui lui sait gèrer plusieurs SGBD.
Pour info PhpMyAdmin est construit sur mysqli.

Huggy, si tu vas sur mysqli_connect (fonction qu'il utilise) c'est clairement écrit que c'est obsolète et que ce sera supprimé. Et comme indiqué ici, elle n'est, même plus utilisé en PHP 7

Bonjour Laznet
Je pense que tu confonds mysql et mysqli
mysql est bien obsolète c'est mysqli qui la remplace y compris pour PHP 7 (même si perso j'ai une préférence pour PDO pour la raison donnée par Huggy)

Mybad ^^ sorry Huggy xD

bonjour

merci pour vos reseignement.
est il possible d'empécher un click en jquery si il n'est pas propriétaire de la page ?

merci encore