2010-10-19 4 views
0

J'ai mis en place le script AJAX que lorsque vous cliquez sur le bouton, il appelle un document PHP. Le problème que j'ai maintenant est que certaines des variables du fichier PHP sont définies sur constant, et maintenant je veux qu'elles soient conditionnelles à ce qui est envoyé quand le bouton est cliqué.PHP - formulaire checkbox soumettre avec ajax

Je veux qu'il y ait une case à cocher qui, si on clique dessus, mettra une variable PHP à TRUE, alors que si ce n'est pas le cas, elle sera définie sur FALSE.

J'espère que le problème est assez clair.

Je vais maintenant coller le code ci-dessous car cela peut aider à clarifier le problème.

Désolé, je dois coller ce morceau "énorme" de code mais je ne sais pas qui peut être utile et qui pas.

Voici index.html

<html> 
<head> 
<script type="text/javascript"> 
function loadXMLDoc() 
{ 
if (window.XMLHttpRequest) 
    {// code for IE7+, Firefox, Chrome, Opera, Safari 
    xmlhttp=new XMLHttpRequest(); 
    } 
else 
    {// code for IE6, IE5 
    xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); 
    } 
xmlhttp.onreadystatechange=function() 
    { 
    if (xmlhttp.readyState==4 && xmlhttp.status==200) 
    { 
    document.getElementById("myDiv").innerHTML=xmlhttp.responseText; 
    } 
    } 
xmlhttp.open("GET","roulette.php",true); 
xmlhttp.send(); 
} 
</script> 
</head> 
<body> 

<div id="myDiv"><h2>Welcome to Trufa&rsquo;s Roulette</h2></div> 
<button type="button" onclick="loadXMLDoc()">Spin the Wheel!</button> 

</body> 
</html> 

Et voici une partie de roulette.php

### Comprare pick to result 

//The squares 

$sqr_00 = -1; 
$sqr_0 = 0; 
$sqr_1 = 1; 


//Placed bets, if true he placed bet 

$bet_straight_placed = array(
$sqr_00 => false, 
$sqr_0 => true, 
$sqr_1 => true 
); 

Ce que je aurais besoin que je l'ai déjà dit, est de remplacer le FAUX en $sqr_00 => false, pour un variable qui est vrai lorsque la case est cochée!

J'espère que la question est suffisamment claire pour être comprise, mais SVP demander toutes les clarifications nécessaires!

Merci d'avance!

Trufa

EDIT:

Aborder réponse @grossvogel Je suis annonce ce que je compris de sa réponse becuse il ne fonctionne pas. Désolé et merci beaucoup!

<html> 
<head> 
<script type="text/javascript"> 
function loadXMLDoc() 
{ 
if (window.XMLHttpRequest) 
    {// code for IE7+, Firefox, Chrome, Opera, Safari 
    xmlhttp=new XMLHttpRequest(); 
    } 
else 
    {// code for IE6, IE5 
    xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); 
    } 
xmlhttp.onreadystatechange=function() 
    { 
    if (xmlhttp.readyState==4 && xmlhttp.status==200) 
    { 
    document.getElementById("myDiv").innerHTML=xmlhttp.responseText; 
    } 
    } 
xmlhttp.open("GET","roulette.php",true); 
xmlhttp.send(); 
} 
var isChecked = document.myform.checkbox.checked ? 1 : 0; 
xmlhttp.open("GET","roulette.php?boxchecked=" + isChecked,true); 
</script> 
</head> 
<body> 

<div id="myDiv"><h2>Welcome to Trufa&rsquo;s Roulette</h2></div> 
<form name="myform"> 
<input type="checkbox" name="checkbox" value="checkbox" />00<br /> 
<button type="button" onclick="loadXMLDoc()">Spin the Wheel!</button> 
</form> 

</body> 
</html> 

et php

//The squares 

$sqr_00 = -1; 
$sqr_0 = 0; 
$sqr_1 = 1; 


//Placed bets, if true he placed bet 
$chb_00 = $_GET['boxchecked']; 

$bet_straight_placed = array(
    $sqr_00 => (bool) $chb_00, 
    $sqr_0 => true, 
    $sqr_1 => true 
); 

//tell the user what number he piecked 

echo "You chose this numbers: " . join(", ", array_keys(array_filter($bet_straight_placed))) . '<br />' . '<br />'; 

je suis désolé je sais que cela doit être tout à fait basique, mais je ne peux pas obtenir ma tête autour de cette AJAX « chose » encore.

Merci!

+0

Une recommandation pendant que vous essayez d'obtenir le coup de AJAX: utiliser Firebug. Il donne des erreurs utiles, vous permet de mettre des points d'arrêt dans votre javascript, et vous permet d'afficher le contenu de toutes les demandes asynchrones. Inestimable. http://getfirebug.com/ – grossvogel

+0

Bon conseil, je vais vous remercier !! – Trufa

Répondre

1

dans votre javascript, vous pouvez faire quelque chose comme ça

var isChecked = document.myform.checkbox.checked ? 1 : 0; 
xmlhttp.open("GET","roulette.php?boxchecked=" + isChecked,true); 

Ensuite, dans votre php, vous pouvez lire $_GET['boxchecked'], qui sera 1 si la case a été cochée, 0 si ce n'était pas.

EDIT: Extension de l'idée à plusieurs champs.
Pour ce faire, vous devez ajouter autant de cases à cocher que vous le souhaitez, en indiquant que leurs noms sont value1, value2, value3, ....Ensuite, vous pouvez faire quelque chose comme ceci:

var value1 = document.myform.value1.checked ? 1 : 0; 
var value2 = document.myform.value2.checked ? 1 : 0; 
var value3 = document.myform.value3.checked ? 1 : 0; 
... 

et

xmlhttp.open("GET","roulette.php?value1=" + value1 + "&value2=" + value2 + "&value3=" + value3 ...,true); 

en php, lisez $_GET['value1'], $_GET['value2'], $_GET['value3']...

Une fois que vous obtenez les concepts, vous pouvez écrire des fonctions pour réduire la duplication, si vous vouloir.

+0

Merci, je vais essayer! – Trufa

+0

Devrais-je mettre: 00
dans l'index.html? – Trufa

+0

Oui, vous devrez ajouter une case à cocher. il devrait résider dans un formulaire (dans mon exemple, 'name =" myform "') et son nom devrait correspondre au javascript (dans mon exemple, 'checkbox'). La valeur n'a pas d'importance, mais vous pouvez ajouter 'checked =" checked "' si vous voulez qu'elle commence à être vérifiée lors du chargement de la page. – grossvogel

Questions connexes