Click to See Complete Forum and Search --> : array + checkbox


raj_2006
05-27-2007, 01:56 AM
Hi all,

I am doing a form submission where there is 4 checkboxes and one array.Better to demonstrate the code with comment...:)

//html
<?$a=array("Meat","Fish","Eggs"); //keeping the food items in a array
foreach($a as $km=>$mi)
{
?>
<tr bgcolor="#D2E9FF">
<td> <font color="#003366" size="2" face="Verdana, Arial, Helvetica, sans-serif">
<?=$mi;?>
</font></td>
<td bgcolor="#D2E9FF" align="center"><font color="#003366" size="2" face="Verdana, Arial, Helvetica, sans-serif">
<input type="checkbox" name="food[<?=$mi;?>]" value="Every Day">
</font></td>
<td bgcolor="#D2E9FF" align="center"><font color="#003366" size="2" face="Verdana, Arial, Helvetica, sans-serif">
<input type="checkbox" name="food[<?=$mi;?>]" value="Every Week">
</font></td>
<td bgcolor="#D2E9FF" align="center"><font color="#003366" size="2" face="Verdana, Arial, Helvetica, sans-serif">
<input type="checkbox" name="food[<?=$mi;?>]" value="Every Year">
</font></td>
<td bgcolor="#D2E9FF" align="center"><font color="#003366" size="2" face="Verdana, Arial, Helvetica, sans-serif">
<input type="checkbox" name="food[<?=$mi;?>]" value="Never">
</font></td>
</tr>
<?}?>
//php code

$food=$_POST['food'];
foreach($food as $k=>$v)
{
echo $k."=".$v."<br>";
}
//I am selecting multiple checkboxes but only one value (the last one) is coming

Meat=Every Day
Fish=Every Week
Eggs=Every Year

whereas I am trying to get the following output (if multiple checkbox checked)

Meat=Every Day,Every Week
Fish=Every Week,Every Year
Eggs=Every Day,Every Year

Shall I use different array for day,week,year,never if yes then how can i keep track of which Food is taking when.

Please suggest me a good way.

Thanks in advance.

Raj

NogDog
05-27-2007, 02:08 AM
I think what you want is:

<input type="checkbox" name="food[<?=$mi;?>][]" value="Every Day">

PS: If you want your code to be more portable and work on servers where php short tags are not enabled, it should be:

<input type="checkbox" name="food[<?php echo $mi; ?>][]" value="Every Day">

raj_2006
05-27-2007, 03:14 AM
Hi

Thanks for your reply first.Yes i have experimented with that code snippet and the out put looks like this:

Array ( [Meat] => Array ( [0] => Every Day [1] => Every Week )
[Fish] => Array ( [0] => Every Week [1] => Every Year )
[Eggs] => Array ( [0] => Every Day [1] => Never ) )

Meat=Array
Fish=Array
Eggs=Array

The values are coming right...but my fetching method is going to be wrong.I am fetching the array values in this way.Also a question that is

<input type="checkbox" name="food[<?=$mi;?>][]" value="Every Day">

is it going to be a multidimensional array concept?

$food=$_POST['food']; //will it be $_POST['food[]']?
foreach($food as $k=>$v)
{
echo $k."=".$v."<br>";
}

Thanks
Raj

raj_2006
05-28-2007, 02:50 AM
Hi

I have done it in this way:

$food=$_POST['food'];
foreach($food as $fk=>$fv)
{
foreach($fv as $fv1)
{
$con .=$fk."=".$fv1."<br>";
}
}
The out put is (if multiple multiple checkbox selected)

Meat=Every day
Meat=Every Week
Fish=Every Year
Fish=Every Day
Eggs=Every Day
Eggs=Every Year

Now i am trying to make this out put in this way:

Meat=Every day,Every Week
Fish=Every Year,Every day
Eggs=Every day,Every Year

Is it possible...Please suggest

Thanks
Raj