views:

874

answers:

7

How do I get the values of php checkboxes in a form to show when emailed to the recipient? I am learning how to use php but I can't figure this one out with the form i have generated.

Below is the checkbox code from the form itself:

<input type="checkbox" value="Please send me a Travel Planner" name="options[]">
<input type="checkbox" value="Please send me a Visitor Map" name="options[]" />
<input type="checkbox" value="Please sign me up for the email newsletter" name="options[]" />

Now here's the form code from the feedback page that processes it:

#<?php
// ------------- CONFIGURABLE SECTION ------------------------

// $mailto - set to the email address you want the form
// sent to, eg
//$mailto       = "[email protected]" ;

$mailto = '[email protected]' ;

// $subject - set to the Subject line of the email, eg
//$subject  = "Feedback Form" ;

$subject = "Request For Visitor Guide" ;

// the pages to be displayed, eg
//$formurl      = "http://www.example.com/feedback.html" ;
//$errorurl     = "http://www.example.com/error.html" ;
//$thankyouurl  = "http://www.example.com/thankyou.html" ;

$formurl = "http://www.example.com/requestform_mtg.php" ;
$errorurl = "http://www.example.com/error.php" ;
$thankyouurl = "http://www.example.com/thankyou.php" ;

$email_is_required = 1;
$name_is_required = 1;
$address_is_required = 1;
$contactname_is_required = 1;
$city_is_required = 1;
$zip_is_required = 1;
$phone_is_required = 1;
$uself = 0;
$use_envsender = 0;
$use_webmaster_email_for_from = 1;
$use_utf8 = 1;

// -------------------- END OF CONFIGURABLE SECTION ---------------

$headersep = (!isset( $uself ) || ($uself == 0)) ? "\r\n" : "\n" ;
$content_type = (!isset( $use_utf8 ) || ($use_utf8 == 0)) ? 'Content-Type: text/plain; charset="iso-8859-1"' : 'Content-Type: text/plain; charset="utf-8"' ;
if (!isset( $use_envsender )) { $use_envsender = 0 ; }
$envsender = "-f$mailto" ;
$name = $_POST['name'] ;
$contactname = $_POST['contactname'] ;
$title = $_POST['title'] ;
$email = $_POST['email'] ;
$address = $_POST['address'] ;
$city = $_POST['city'] ;
$state = $_POST['state'] ;
$zip = $_POST['zip'] ;
$fax = $_POST['fax'] ;
$phone = $_POST['phone'] ;
$mtgname = $_POST['mtgname'] ;
$dates = $_POST['dates'] ;
$attendance = $_POST['attendance'] ;
$guestroom = $_POST['guestroom'] ;
$mtgroom = $_POST['mtgroom'] ;
$timeframe = $_POST['timeframe'] ;
$options = $_POST['options'] ;
$comments = $_POST['comments'] ;
$http_referrer = getenv( "HTTP_REFERER" );

if (!isset($_POST['email'])) {
    header( "Location: $formurl" );
    exit ;
}
if (($email_is_required && (empty($email) || !ereg("@", $email))) || ($name_is_required && empty($name)) || ($address_is_required && empty($address)) || ($contactname_is_required && empty($contactname)) || ($city_is_required && empty($city)) || ($zip_is_required && empty($zip)) || ($phone_is_required && empty($phone))) {
    header( "Location: $errorurl" );
    exit ;
}
if ( ereg( "[\r\n]", $name ) || ereg( "[\r\n]", $email ) || ereg( "[\r\n]", $address ) || ereg( "[\r\n]", $contactname ) ) {
    header( "Location: $errorurl" );
    exit ;
}
if (empty($email)) {
    $email = $mailto ;
}
$fromemail = (!isset( $use_webmaster_email_for_from ) || ($use_webmaster_email_for_from == 0)) ? $email : $mailto ;

if (get_magic_quotes_gpc()) {
    $comments = stripslashes( $comments );
}

$messageproper =
    "This message was sent from:\n" .
    "$http_referrer\n" .
    "------------------------------------------------------------\n" .
    "Organization Name: $name\n" .
    "Contact Name: $contactname\n" .   
    "Email of sender: $email\n" .
    "Address of sender: $address\n" .
    "City of sender: $city\n" .
    "State of sender: $state\n" .
    "Zip Code of sender: $zip\n" . 
    "Fax of sender: $fax\n" .   
    "Phone of sender: $phone\n" .
    "Meeting Name: $mtgname\n" .           
    "Preferred Dates: $dates\n" .          
    "Expected Attendance: $attendance\n" .         
    "Guest Rooms: $guestroom\n" .
    "Largest Meeting Room Needed: $mtgroom\n" .            
    "Decision Timeframe: $timeframe\n" .   
    "Options: $options\n" .                            
    "------------------------- COMMENTS -------------------------\n\n" .
    $comments .
    "\n\n------------------------------------------------------------\n" ;
$headers =
   "From: \"$name\" <$fromemail>" . $headersep . "Reply-To: \"$name\" <$email>" . $headersep . "X-Mailer: chfeedback.php 2.13.0" .
    $headersep . 'MIME-Version: 1.0' . $headersep . $content_type ;

if ($use_envsender) {
    mail($mailto, $subject, $messageproper, $headers, $envsender );
}
else {
    mail($mailto, $subject, $messageproper, $headers );
}
header( "Location: $thankyouurl" );
exit ;

?>

All I get via email for the checkboxes is "array".

Thanks

+1  A: 
$options = join(', ', $_POST['options']);
chaos
+2  A: 

$options is an array. Try imploding it.

$options = implode(', ', $options);
Ryan Graham
+2  A: 

Checkboxes are treated as an array when they are submitted.

foreach($options as $option) {
  print $option."\n";
}

or

print implode("\n", $options);
tj111
+2  A: 

Here's a suggestion. Instead of this:

"Options: $options\n" .

Try this:

"Options:".implode("\n",$options)."\n".

There's always the possibility that no array of $options will exist (no check boxes were checked). In this case, you can do something like:

"Options:".(isset($options) ? implode("\n",$options) : "")."\n".
JayTee
Please check my latest "answer". Not really an answer but a question for you. thanks.
godleuf
A: 

First, you need to get rid of your "[ ]" in the name of your variable for the HTML checkboxes.

If you name it "options" when it is submitted to the processing page it comes through as an array.

From that point, you now have an array of the values selected.

$_POST['options']

jerebear
A: 

Just noticed I get these errors if I DON'T select a checkbox and submit:

Warning: implode() [function.implode]: Invalid arguments passed in /home/content/o/l/t/oltvcb/html/feedback_mtg.php on line 148

Warning: Cannot modify header information - headers already sent by (output started at /home/content/o/l/t/oltvcb/html/feedback_mtg.php:148) in /home/content/o/l/t/oltvcb/html/feedback_mtg.php on line 162

I did notice that the form data actually came through in my email...

HELP!

godleuf
I've updated my answer
JayTee
A: 

I m getting the same error. Did you find a solution for this yet?