views:

26

answers:

1

Hi,

I have this code for that "sends by" GET true or false concerning if a checkbox is checked or not:

var isChecked = document.myform.checkbox.checked ? 1 : 0;
var isChecked0 = document.myform.checkbox0.checked ? 1 : 0;
var isChecked1 = document.myform.checkbox1.checked ? 1 : 0;

xmlhttp.open("GET","roulette2.php?boxchecked=" + isChecked,true);
xmlhttp.send();

The html goes like this:

<input type="checkbox" name="checkbox" value="checkbox" />00<br />
<input type="checkbox" name="checkbox0" value="checkbox" />0<br />
<input type="checkbox" name="checkbox1" value="checkbox" />1<br />

As you can se up there in:

xmlhttp.open("GET","roulette2.php?boxchecked=" + isChecked,true);

This only verifies whether the first checkbox is clicked and not the other ones.

How can you modify the xmlhttp.open to vige the 3 checkboxes the "option to be checked".

Thanks in advance!!

Trufa

+2  A: 

You want to send all checked states in one variable?

Concatenate the states in a string:

var dm = document.myform;
var isCheched = (dm.checkbox.checked ? "1" : "0")+
(dm.checkbox0.checked ? "1" : "0") +
(dm.checkbox1.checked ? "1" : "0");

You get 000 if none is checked 001 if chekbox is checked, and 111 if all is checked.

UPDATE

I looked at your code again, and saw roulette... Are you writing a roulette-game? Then this might be useful:

function submitRoulette( ) {
    var i,box;
    var boxes = document.getElementById("roulette").getElementsByTagName("input");
    var checked=[]; // We are going to conatenate the values in this array.

    for (i=0; i < boxes.length; ++i) {
        box = boxes[i];
        if (box.name=="b" && box.checked) {
            checked.push(box.value);
        }
    }

    checked = checked.join(""); // Converts the array to a string.

    xmlhttp.open("GET","roulette2.php?boxchecked=" + checked,true);
    xmlhttp.send();

    return false; // Prevents the form from being submited the normal way
}

And with HTML markup like:

<form id="roulette" method="post" action="" onsubmit="return submitRoulette()">
<div>
    <span><input type="checkbox" name="b" value="0" />0</span>
    <span><input type="checkbox" name="b" value="-" />zero</span>
    <span><input type="checkbox" name="b" value="z" />00</span>
</div>

<div>
    <span><input type="checkbox" name="b" value="1" />1</span>
    <span><input type="checkbox" name="b" value="2" />2</span>
    <span><input type="checkbox" name="b" value="3" />3</span>
    <span><input type="checkbox" name="b" value="b" />1-3</span>
</div>
[snip]
<div>
    <span><input type="checkbox" name="b" value="V" />31</span>
    <span><input type="checkbox" name="b" value="W" />32</span>
    <span><input type="checkbox" name="b" value="X" />33</span>
    <span><input type="checkbox" name="b" value="l" />31-33</span>
</div>
<div>
    <span><input type="checkbox" name="b" value="Y" />34</span>
    <span><input type="checkbox" name="b" value="Z" />35</span>
    <span><input type="checkbox" name="b" value="a" />36</span>
    <span><input type="checkbox" name="b" value="m" />34-36</span>
</div>
<div>
    <span><input type="checkbox" name="b" value="n" />1..34</span>
    <span><input type="checkbox" name="b" value="o" />2..35</span>
    <span><input type="checkbox" name="b" value="p" />3..36</span>
</div>

<div>
    <span><input type="checkbox" name="b" value="q" />1-12</span>
    <span><input type="checkbox" name="b" value="r" />13-24</span>
    <span><input type="checkbox" name="b" value="s" />25-36</span>
</div>
<div>
    <span><input type="checkbox" name="b" value="t" />1-18</span>
    <span><input type="checkbox" name="b" value="u" />19-36</span>
</div>
<div>
    <span><input type="checkbox" name="b" value="v" />odd</span>
    <span><input type="checkbox" name="b" value="w" />even</span>
    <span><input type="checkbox" name="b" value="x" />red</span>
    <span><input type="checkbox" name="b" value="y" />black</span>
</div>

<button type="submit">Send</button>
</form>

In your php-code you have to decode the values:

0-35 is 0-9,A-Z and 36 = a.
row 1 (1-3) = b, row 2 (4-6) = c ... row 12 (33-36) = m
col 1 (1..34) = n, col 2(2-24) = o, col 3(3-36) = p
1-12 = q, 13-24 = r, 25-36 = s
1-18 = t, 19-36 = u
odd = v, even = w
red = x, black = y
00 = x
0 or 00 = - (minus)
some
Sorry, almost forgot! thank and it worked just fine!
Trufa
@Trufa: No problem, just happy to help. I hope the update will help you even more :)
some
@some you shouldnt have bothered!! thank you very much ill take a look! I´m am writing a php roulette game with a MySQL database so you can imagine it is not very interactive nor fun :) A little of AJAX to up the ante just a tiny bit! Thanks again you´ve been really too kind!!
Trufa
@Trufa: No problem at all! If I had understood from the beginning that you had more than 3 checkboxes I would have given an example with a loop. By setting different values of the checkboxes, the string that is sent to your php-script is as short as possible; There is no need to send the status of checkboxes that isn't checked. Good luck and happy coding!
some
Btw, since each checkbox has it's own unique value, the order of the checkboxes isn't important. Just put them where you want.
some
@some that is gret, I did it with three on the first place because I dont "trust" my code very much, so if I have to test if when the 17 comes up it echoes "you won", its quite boring to have to actually guess the luck number out of 36 :) I know there might be clever ways test this but this the topic of my next question. So thanks again, youve been really very helpful!
Trufa