Jump to content

Send e-mail to one or more recipients selected in HTML form


peasy_op

Recommended Posts

I got a form which people can use to send a request for information to one or more recipients, depending on which recipients have been selected in the form. At the moment the HTML checkboxes all have a different name attribute and e-mails are sent using an if statement:

 

<input type="checkbox" name="mr-a" value="A" /> A<br />
<input type="checkbox" name="mr-b" value="B" /> B<br />
<input type="checkbox" name="mr-c" value="C" /> C<br />

if (isset($_POST['mr-a'])) {
// Send e-mail to A
}
if (isset($_POST['mr-b'])) {
// Send e-mail to B
}
if (isset($_POST['mr-c'])) {
// Send e-mail to C
}

 

I'm sure there's a much better way of doing this, and I think I should start by creating an array of checkboxes. But I can't figure out how to then use a loop to send the e-mails. Here's the code I got so far. I'm hoping that all I need is a loop where is says 'Send e-mails using a foreach loop?':

 

<?php

// Minimal validation:
if (isset($_POST['submit'])) {
$errors = array();
if (!$_POST['name'] ) {
	$errors[] = 'Error: no name entered';
} else {
	$name = $_POST['name'];
	}
if (!$_POST['email'] ) {
	$errors[] = 'Error: no e-mail address entered';
} else {
	$email = $_POST['email'];
	}
if (!count($errors)) {
	// Send e-mails using a foreach loop?
}
?>		

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<title>Lorem Ipsum</title>
<!--[if lt IE 9]><script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script><![endif]-->
<link rel="stylesheet" href="style.css" type="text/css" />
</head>

<body id="index" class="home">

<h1>Lorem Ipsum</h1>
<p>Confirmation message.</p>

</body>
</html>

<?php
// Get out!
exit(0);
}
?>

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<title>Lorem Ipsum</title>
<!--[if lt IE 9]><script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script><![endif]-->
<link rel="stylesheet" href="style.css" type="text/css" />
</head>

<body id="index" class="home">

<h1>Lorem Ipsum</h1>
<p>Contact A, B and/or C.</p>

<?php
if (isset($errors)) {
	foreach ($errors as $error) {
	echo("<p class=\"red\">$error<p>");
	}
}
?>

<form method="post" action="<?php echo htmlentities($_SERVER['PHP_SELF']); ?>">
<fieldset>
  <legend>Who do you want to contact</legend>
  <input type="checkbox" name="mr[]" value="A" /> A<br />
  <input type="checkbox" name="mr[]" value="B" /> B<br />
  <input type="checkbox" name="mr[]" value="C" /> C<br />
</fieldset>

<br />

<fieldset>
  <legend>Your Details</legend>
  <label for="name">Name</label><input type="text" name="name" value="<?php if (isset($_POST['name'])) {echo $_POST['name'];}?>"><br />
  <label for="email">Email</label><input type="email" name="email" value="<?php if (isset($_POST['email'])) {echo $_POST['email'];}?>"><br />
  <input type="submit" name="submit" value="Next" />
</fieldset>
</form>

</body>
</html>

Link to comment
Share on other sites

This thread is more than a year old. Please don't revive it unless you have something important to add.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.