Forum Moderators: coopster

Message Too Old, No Replies

Checkbox array not being passed to email

         

cookie2

10:03 pm on Jan 31, 2007 (gmt 0)

10+ Year Member



Okay, I'm starting to get a little ticked off because I've worked for hours on this and I can't seem to find the cause. I'm using PHP 5.1.6. I'm trying to get the values of some checkboxes along with another fixed variable and pass them along in an email. For demonstration purposes, assume I have checked the Wed and Fri checkboxes and picked 9:00 am.

<FORM ACTION="test.php" METHOD=POST>
<TABLE border="1" width="70%" >
<TR>
<td><input type="checkbox" name="NewClass[]" value="Mon" size="5" maxlength="2"> </td>
<td><input type="checkbox" name="NewClass[]" value="Tue" size="5" maxlength="2"> </td>
<td><input type="checkbox" name="NewClass[]" value="Wed" size="5" maxlength="2"> </td>
<td><input type="checkbox" name="NewClass[]" value="Thu" size="5" maxlength="2"> </td>
<td><input type="checkbox" name="NewClass[]" value="Fri" size="5" maxlength="2"> </td>
<td><input type="checkbox" name="NewClass[]" value="Sat" size="5" maxlength="2"> </td>
<td><input type="checkbox" name="NewClass[]" value="Sun" size="5" maxlength="2"> </td>
<TD><input type="text" name="NewClass-Time" size="5" maxlength="10"></TD>
</TR>
</TABLE>
<input type="submit" name="ClassList" value="Submit Survey Info" class="button">
</form>

When I print out print_r($_POST);, I get everything passed correctly as in:

Array
(
[NewClass] => Array
(
[0] => Wed
[1] => Fri
)

[NewClass-Time] => 9:00 am
)

But when it gets mailed, the results listed on the email are as follows:

NewClass: Array

NewClass-Time: 9:00 am

I stripped the processing script down to the barest of essentials. All that's on it right now is:

foreach($_POST as $key => $value){if(!(!isset($value))){$set=1;}$message = $message . "$key: $value\n\n";} if($set!==1){header("location: $_SERVER[HTTP_REFERER]");exit;}

$message = stripslashes($message);

$headers = "From: " . $_POST['name'] . " <" .$_POST['email'] . ">\n" . "Return-Path: " . $_POST['email'] . "\n" . "Reply-To: " . $_POST['email'] . "\n";

mail($my_email,$subject,$message,$headers);

Does anyone see what I'm obviously missing? How can I get the NewClass array to pass each chosen value on in the email instead of printing out "array"?

whoisgregg

10:23 pm on Jan 31, 2007 (gmt 0)

WebmasterWorld Senior Member 10+ Year Member



You could implode [php.net] the array:

foreach($_POST as $key => $value){
if(!(!isset($value))){$set=1;}
if(is_array($value)){
$message = $message . "$key: ".implode( ', ', $value)."\n\n";
} else {
$message = $message . "$key: $value\n\n";
}
}

cookie2

11:33 pm on Jan 31, 2007 (gmt 0)

10+ Year Member



Thank you ever so much. Sometimes I can't see the forest for the trees. ;-)