2017-10-10 11 views
0

J'essaie de faire en sorte que ma case à cocher change une variable à true quand elle est cochée, mais chaque fois que je clique dessus, elle rafraîchit simplement la page et laisse la valeur de config comme fausse.Pourquoi ma configuration ne change-t-elle pas lorsque je clique sur une case à cocher?

Code HTML:

<input type="checkbox" name="music"> 

code JQuery:

<script> 
     $(document).ready(function() { 
      var music = document.getElementsByName("music") 
      $(music).click(function() { 
       window.location.href = 'validate.php?music'; 
      }) 
     }); 
</script> 

code de validate.php:

if (isset($_POST["music"])) { 
    $config -> SetVar("music_status", "true", "Music Status"); 
} else { 
    $config -> SetVar("music_status", "false", "Music Status"); 
} 

La fonction SetVar fonctionne comme je l'utilise pour d'autres choses, il ne veut tout simplement pas fonctionner avec ma case à cocher. Toute aide et conseils seraient appréciés pour m'aider à résoudre ce problème.

+1

Utilisation _GET au lieu de _POST puisque votre code utilise une redirection et ne forme pas présente avec action = après. – numbtongue

+0

Cela m'a permis de changer la valeur en vrai, mais maintenant cela reste vrai et ne changera pas en faux. –

+0

window.location.href = (window.location.href.indexOf ('musique')! = - 1)? 'validate.php': 'validate.php? music'; – numbtongue

Répondre

0

Vous définissez toujours le $ _GET ['musique'], mais vous ne le définissez pas et vous ne vérifiez pas sa valeur. changer votre javascript pour

$(document).ready(function() { 
     var music = document.getElementsByName("music")[0].checked; 
     $(music).click(function() { 
      window.location.href = 'validate.php?music=' + music; 
     }) 
    }); 

Et votre code php pour

if (isset($_GET["music"]) && $_GET['music'] == 'true') { 
+0

J'ai dû changer certaines choses, mais pour la plupart cela a aidé. Merci! –