Below shows an extract of my HTML file. The forms objective was when a user selects a checkbox it would add a further value onto a starting total value.
<!doctype html>
<html class="">
<head>
<script type="text/javascript">
function checkTotal() {
document.listForm.total.value = '';
var sum = 68.50;
for (i=0;i<document.listForm.choice.length;i++) {
if (document.listForm.choice[i].checked) {
sum = sum + parseFloat(document.listForm.choice[i].value);
}
}
document.listForm.total.value = sum.toFixed(2);
}
</script>
</head>
<body>
<form name="listForm" method="post" action="standard_form.php">
<div class="form-group">
<label for="additional_extras">Extras</label><br><br>
<input type="checkbox" name="choice" value="60.00" onchange="checkTotal()"> Number1 </div>
<div class="form-group">
<label for="additional_extras_2"></label><br>
<input type="checkbox" name="choice" value="20.00" onchange="checkTotal()"> Number 2
</div>
<div class="form-group">
<label for="additional_extras_3"></label><br>
<input type="checkbox" name="choice" value="45.00" onchange="checkTotal()"> Number 3
</div>
<div class="form-group">
<label for="additional_extras_4"></label><br>
<input type="checkbox" name="choice" value="23.50" onchange="checkTotal()"> Number 4
</div>
<div class="form-group">
<label for="additional_extras_5"></label><br>
<input type="checkbox" name="choice" value="40.00" onchange="checkTotal()"> Number 5
</div>
<div class="form-group">
<label for="additional_extras_6"></label><br>
<input type="checkbox" name="choice" value="23.50" onchange="checkTotal()"> Number 6
</div>
<div class="form-group">
<label for="additional_extras_7"></label><br>
<input type="checkbox" name="choice" value="120.00" onchange="checkTotal()"> Number 7
<br>
<h3>Your Current Package Total: £<input type="text" readonly placeholder="68.50" name="total" id="total"/></h3>
<button type="submit" class="btn btn-default">Submit</button>
</form>
</div>
</body>
</html>
I would then send this form to the following php file which would then email the forms outputs. I have managed to get all other fields to send successfully but cannot get the check box values to send and be outputted by email without the adding function (which makes the total) becoming interrupted.
<?php
if(isset($_POST['email'])) {
// EDIT THE 2 LINES BELOW AS REQUIRED
$email_to = "myemail";
$email_subject = "mysubject";
function died($error) {
// your error code can go here
echo "We are very sorry, but there were error(s) found with the form you submitted. ";
echo "These errors appear below.<br /><br />";
echo $error."<br /><br />";
echo "Please go back and fix these errors.<br /><br />";
die();
}
$choice = $_POST['choice']; // required
$total = $_POST['total']; // required
$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 .= "Choice: ".clean_string($choice)."\n";
$email_message .= "Order Total: ".clean_string($total)."\n";
// create email headers
$headers = 'From: '.$email_from."\r\n".
'Reply-To: '.$email."\r\n" .
'X-Mailer: PHP/' . phpversion();
@mail($email_to, $email_subject, $email_message, $headers);
?>
<!-- include your own success html here -->
Thank you for contacting us. We will be in touch with you very soon.
<?php
}
?>
Please does anyone have a solution for this?? What ever I try I just cant get the check boxes to send through there values and display themselves in the email like the rest of the form.
Any help would be much appreciated!
Thanks!
You're building your checkbox inputs all with the SAME name. This means that PHP will process the form submission and continually overwrite "previous" versions of a particular field name:value pair with new copies, e.g
(note same name, 3 different values). Only
baz
will show up in $_POST/$_GET, because it's the last copy of thefoo
name in the form.If you want the individual checkbox values to be submitted AND saved, you'll have to use the PHP-specific array notation in the field naming:
This will turn
$_POST['foo']
into an array, and tell PHP to save each individual value as an array element.Change you checkbox's name to choice[], so you can use it as array.
When you submit your form it'll comming like this:
So, you can acess it like $_POST['choice'][0] or [1] or [2] and go.