6 Replies - 454 Views - Last Post: 20 December 2012 - 10:16 AM Rate Topic: -----

#1 chris.07970  Icon User is offline

  • New D.I.C Head

Reputation: 0
  • View blog
  • Posts: 4
  • Joined: 20-December 12

Send dropdown contents in email

Posted 20 December 2012 - 09:14 AM

First of All, Hello there, I'm new to forum and php.

I'm trying to send an email from a website contact form. I'm collecting the data into an array and most of the form works correctly. However I have added a dropdown box and if I use print it looks like the data from the drop down is being collected but not posted to email.

Here is the code

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<body>


<?php
print_r($_POST);
if(isset($_POST['email'])) {
	
	// CHANGE THE TWO LINES BELOW
	$email_to = "myweb.co.uk";
	
	$email_subject = "Website Callback Requests";
	
	
	function died($error) {
		// your error code can go here
		echo "We are sorry, but there appears to be a problem with the form you submitted.<br /><br />";
		echo $error."<br /><br />";
		echo "Please go back and fix these errors.<br /><br />";
		die();
	}
	
	// validation expected data exists
	if(!isset($_POST['first_name']) ||
		!isset($_POST['last_name']) ||
		!isset($_POST['email']) ||
		!isset($_POST['telephone']))
		 
        {
		;		
	}
	
	$first_name = $_POST['first_name']; // required
	$last_name = $_POST['last_name']; // required
	$email_from = $_POST['email']; // required
	$telephone = $_POST['telephone']; // required
	$Contact_Time = $_POST['Contact Time']; //required
	$error_message = "";
	$email_exp = '/^[A-Za-z0-9._%-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}$/';
  if(!preg_match($email_exp,$email_from)) {
  	$error_message .= 'The Email Address you entered does not appear to be valid.<br />';
  }
	$string_exp = "/^[A-Za-z .'-]+$/";
  if(!preg_match($string_exp,$first_name)) {
  	$error_message .= 'The First Name you entered does not appear to be valid.<br />';
  }
  if(!preg_match($string_exp,$last_name)) {
  	$error_message .= 'The Last Name you entered does not appear to be valid.<br />';
  }

  if(strlen($error_message) > 0) {
  	died($error_message);
  }
	$email_message = "Form details below.\n\n";
	
	function clean_string($string) {
	  $bad = array("content-type","bcc:","to:","cc:","href");
	  return str_replace($bad,"",$string);
	}
	
	$email_message .= "First Name: ".clean_string($first_name)."\n";
	$email_message .= "Last Name: ".clean_string($last_name)."\n";
	$email_message .= "Email: ".clean_string($email_from)."\n";
	$email_message .= "Telephone: ".clean_string($telephone)."\n";
	$email_message .= "Contact time: ".clean_string($Contact_Time)."\n";
	
	
// create email headers
$headers = 'From: anemail.biz'.$email_from."\r\n".
'Reply-To: '.$email_from."\r\n" .
'X-Mailer: PHP/' . phpversion();
@mail($email_to, $email_subject, $email_message, $headers);  
?>

<!-- place your own success html below -->

Thank you for contacting us. We will be in touch with you very soon.

<?php
}
die();
?>
</body>
</html>


As you can see I am using a template .
Thank you for any help in advance
Chris

Is This A Good Question/Topic? 0
  • +

Replies To: Send dropdown contents in email

#2 JackOfAllTrades  Icon User is offline

  • Saucy!
  • member icon

Reputation: 6092
  • View blog
  • Posts: 23,612
  • Joined: 23-August 08

Re: Send dropdown contents in email

Posted 20 December 2012 - 09:50 AM

Are we supposed to know which of this data was "collected from a dropdown"? Is it this?

$_POST['Contact Time']


I would change the form field to have a name without a space.
Was This Post Helpful? 0
  • +
  • -

#3 chris.07970  Icon User is offline

  • New D.I.C Head

Reputation: 0
  • View blog
  • Posts: 4
  • Joined: 20-December 12

Re: Send dropdown contents in email

Posted 20 December 2012 - 09:53 AM

Sorry yes that is the one
Was This Post Helpful? 0
  • +
  • -

#4 JackOfAllTrades  Icon User is offline

  • Saucy!
  • member icon

Reputation: 6092
  • View blog
  • Posts: 23,612
  • Joined: 23-August 08

Re: Send dropdown contents in email

Posted 20 December 2012 - 09:58 AM

Quote

I would change the form field to have a name without a space.


There's my advice. Change the select's name to something without a space.
Was This Post Helpful? 1
  • +
  • -

#5 chris.07970  Icon User is offline

  • New D.I.C Head

Reputation: 0
  • View blog
  • Posts: 4
  • Joined: 20-December 12

Re: Send dropdown contents in email

Posted 20 December 2012 - 10:01 AM

However it still doesn't work. In browser I get:

Array ( [first_name] => Chris [last_name] => Cald [email] => chris@myweb.co.uk [telephone] => 446546846841 [Contact_time] => 10 to 11 )
Notice: Undefined index: ContactTime in E:\Domains\f\myweb.biz\user\htdocs\html_form_send.php on line 38
Thank you for contacting us. We will be in touch with you very soon

yet in email I get:

Form details below.

First Name: Chris
Last Name: Cald
Email: chris@myweb.co.uk
Telephone: 446546846841
Contact time
Was This Post Helpful? 0
  • +
  • -

#6 no2pencil  Icon User is offline

  • Admiral Fancy Pants
  • member icon

Reputation: 5382
  • View blog
  • Posts: 27,350
  • Joined: 10-May 07

Re: Send dropdown contents in email

Posted 20 December 2012 - 10:07 AM

You need to change the name/id on the form you are using to POST.
Was This Post Helpful? 0
  • +
  • -

#7 chris.07970  Icon User is offline

  • New D.I.C Head

Reputation: 0
  • View blog
  • Posts: 4
  • Joined: 20-December 12

Re: Send dropdown contents in email

Posted 20 December 2012 - 10:16 AM

Removing the space has cured it
Thank you very much.
Was This Post Helpful? 0
  • +
  • -

Page 1 of 1