2
I need help with a form on PHP
complex, as well as sending email
for administrators, send also to the client. The email is in html
and automatically creates a pdf
through html2pdf
.
So that’s it, it’s working, because it creates the PDF
, sends the email
with link to the PDF
, but is not taking the values entered in the form.
Form process, PDF creation, email submission, and a counter:
<?php
require_once(dirname(__FILE__).'/html2pdf/html2pdf.class.php');
?>
<?php
if(isset($_POST['email'])) {
// EDIT THE 2 LINES BELOW AS REQUIRED
$email_to = "[email protected],[email protected]";
$email_client = $_POST['email'];
$email_subject = "3Compare Booking";
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();
}
// validation expected data exists
if(!isset($_POST['name']) ||
!isset($_POST['email']) ||
!isset($_POST['number']) ||
!isset($_POST['optionsRadios']))
{
died('We are sorry, but there appears to be a problem with the form you submitted.');
$name = $_POST['name']; // required
$email = $_POST['email']; // required
$number = $_POST['number']; // required
$optionsAreas = $_POST['optionsAreas']; // not required
$optionsRadios = $_POST['optionsRadios']; // not required
$newsletter = $_POST['newsletter'];
$ref = $_POST['ref'];
}
$error_message = "";
$email_exp = '/^[A-Za-z0-9._%-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}$/';
if(!preg_match($email_exp,$email)) {
$error_message .= "The Email Address you entered does not appear to be valid.<br />";
}
$string_exp = "/^[A-Za-z .'-]+$/";
if(!preg_match($string_exp,$name)) {
$error_message .= 'The First Name you entered does not appear to be valid.<br />';
}
if(strlen($number) < 2) {
$error_message .= 'The Last Name you entered does not appear to be valid.<br />';
}
if(!preg_match($string_exp,$optionsRadios)) {
$error_message .= 'The Comments you entered do not appear to be valid.<br />';
}
if(!preg_match($string_exp,$newsletter)) {
$error_message .= 'The Comments you entered do not appear to be valid.<br />';
}
function clean_string($string) {
$bad = array("content-type","bcc:","to:","cc:","href");
return str_replace($bad,"",$string);
}
$datei = fopen("library/countlog.txt","r");
$count = fgets($datei,1000);
fclose($datei);
$ref="3COMPAREWLC".$count."-".date('ymd');
$numlink = '3COMPAREWLC'.$count.'-'.date('ymd');
$email_message ="<body style='background:#F6F6F6; font-family:Verdana, Arial, Helvetica, sans-serif; font-size:12px; margin:0; padding:0;'>
<div style='background:#F6F6F6; font-family:Verdana, Arial, Helvetica, sans-serif; font-size:12px; margin:0; padding:0;'>
<table cellspacing='0' cellpadding='0' border='0' height='100%' width='100%'>
<tr>
<td align='center' valign='top' style='padding:20px 0 20px 0'>
<!-- [ header starts here] -->
<table bgcolor='FFFFFF' cellspacing='0' cellpadding='10' border='0' width='650' style='border:1px solid #E0E0E0;'>
<tr>
<td valign='top'>
<a href='http://super8.pt/3compare/'><img src='http://super8.pt/3compare/library/images/3compare_logo.jpg' alt='3COMPARE' style='margin-bottom:10px;' border='0'/></a></td>
</tr>
<!-- [ middle starts here] -->
<tr>
<td valign='top'>
<h1 style='font-size:22px; font-weight:normal; line-height:22px; margin:0 0 11px 0;'>New Reservation</h1>
<p style='font-size:12px; line-height:16px; margin:0 0 16px 0;'>A new reservation was made on the website 3COMPARE</p>
<p style='border:1px solid #E0E0E0; font-size:12px; line-height:16px; margin:0; padding:13px 18px; background:#f9f9f9;'>
Personal Info <br/>
<strong>Reference:</strong> ".clean_string($ref)."<br/>
<strong>Name:</strong> ". $_POST['name']."<br/>
<strong>Email:</strong> ".$_POST['email']."<br/>
<strong>Mobile Number:</strong> ".$_POST['number']."<br/>
<strong>Payment Method:</strong> ".$_POST['optionsRadios']."<br/>
<strong>Newsletter:</strong> ".$_POST['newsletter']."<p>
<p style='font-size:12px; line-height:16px; margin:0 0 8px 0;'>Laser Hair Loss Therapy:<br/>
30-minute session per week for three months, with 13 sessions in total.</p>
<p style='border:1px solid #E0E0E0; font-size:12px; line-height:16px; margin:0; padding:13px 18px; background:#f9f9f9;'>".$optionsAreas."</p>
<p style='font-size:12px; line-height:16px; margin:0;'></p>
<p style='border:1px solid #E0E0E0; font-size:12px; line-height:16px; margin:0; padding:13px 18px; background:#f9f9f9;'>
<a href='http://super8.pt/3compare/voucher/ticket".$numlink.".pdf'>Click here to download and print your voucher</a>
</p>
</td>
</tr>
<tr>
<td bgcolor='#EAEAEA' align='center' style='background:#EAEAEA; text-align:center;'><center><p style='font-size:12px; margin:0;'><strong>3COMPARE</strong></p></center></td>
</tr>
</table>
</td>
</tr>
</table>
</div>
</body>";
// create email headers
$headers = 'From: '.$email_from."\r\n".
'Reply-To: '.$email_from."\r\n" .
'X-Mailer: PHP/' . phpversion();
$headers = "Content-Type: text/html; charset=utf-8\r\n";
@mail($email_to, $email_subject, $email_message, $headers);
@mail($email_client, $email_subject, $email_message, $headers);
ob_start();
$num = '3COMPAREWLC'.$count.'-'.date('ymd');
$nom = $name;
$date = '2014/07/31';
?>
<style type="text/css">
<!--
div.zone { border: none; border-radius: 6mm; background: #FFFFFF; border-collapse: collapse; padding:3mm; font-size: 2.7mm;}
h1 { padding: 0; margin: 0; color: #DD0000; font-size: 7mm; }
h2 { padding: 0; margin: 0; color: #222222; font-size: 5mm; position: relative; }
-->
</style>
<page format="100x200" orientation="L" backcolor="#f0a804" style="font: arial;">
<div style="rotate: 90; position: absolute; width: 100mm; height: 4mm; left: 195mm; top: 0; font-style: italic; font-weight: normal; text-align: center; font-size: 2.5mm;">
This is your e-ticket to present at the Clinic
</div>
<table style="width: 99%;border: none;" cellspacing="4mm" cellpadding="0">
<tr>
<td colspan="2" style="width: 100%">
<div class="zone" style="height: 34mm;position: relative;font-size: 5mm;">
<div style="position: absolute; right: 3mm; top: 3mm; text-align: right; font-size: 4mm; ">
<b><?php echo $nom; ?></b><br>
</div>
<div style="position: absolute; right: 3mm; bottom: 3mm; text-align: right; font-size: 4mm; ">
<b>Weight Loss Clinic</b><br>
Reference : <b><?php echo $num; ?></b><br>
Booked at : <b><?php echo date('d/m/Y à H:i:s'); ?></b><br>
</div>
<h1>VOUCHER</h1>
<b>Valid until <?php echo $date; ?></b><br>
<img src="library/images/3compare_logo.jpg" width="233" height="65" alt="logo" style="margin-top: 3mm; margin-left: 20mm">
</div>
</td>
</tr>
<tr>
<td style="width: 25%;">
<div class="zone" style="height: 40mm;vertical-align: middle;text-align: left;">
<b><?php echo $_POST['optionsAreas']?></b>
</div>
</td>
<td style="width: 75%">
<div class="zone" style="height: 40mm;vertical-align: middle; text-align: justify">
<b>Personal Info</b><br>
<strong>Name:</strong> <?php echo $_POST['name']?><br/>
<strong>Email:</strong> <?php echo $_POST['email']?><br/>
<strong>Mobile Number:</strong> <?php echo $_POST['number']?><br/>
<strong>Payment Method:</strong> <?php echo $_POST['optionsRadios']?><br/>
<p style="font-size:10px; line-height:12px; margin:0 0 8px 0;"><b>Laser Hair Loss Therapy:</b><br/>
30-minute session per week for three months, with 13 sessions in total.</p>
</div>
</td>
</tr>
</table>
</page>
<?php
$content = ob_get_clean();
// convert
try
{
$html2pdf = new HTML2PDF('P', 'A4', 'fr', true, 'UTF-8', 0);
$html2pdf->pdf->SetDisplayMode('fullpage');
$html2pdf->writeHTML($content, isset($_GET['vuehtml']));
$html2pdf->Output('voucher/ticket'.$num.'.pdf','F');
}
catch(HTML2PDF_exception $e) {
echo $e;
exit;
}
?>
<!-- include your own success html here -->
<div class="container orange-bg">
<p><div class="alert alert-success">Thank you <?php echo $_POST['name']?> for booking at 3COMPARE. We will be in touch with you very soon. <a class="btn btn-warning btn-shadow" href="<?php echo 'voucher/ticket'.$num.'.pdf'?>"><strong>Download your Voucher</strong> <i class="fa fa-arrow-circle-down"></i></a></div></p>
</div>
<?php
/* counter */
//opens countlog.txt to read the number of hits
$datei = fopen("library/countlog.txt","r");
$count = fgets($datei,1000);
fclose($datei);
$count=$count + 1 ;
// opens countlog.txt to change new hit number
$datei = fopen("library/countlog.txt","w");
fwrite($datei, $count);
fclose($datei);
?>
<?php
}
?>
Form:
<form class="form-horizontal marginform" role="form" method="post" action="<?php $_SERVER['PHP_SELF']; ?>" name="frm1" id="frm1">
<div class="row">
<div class="col-md-4 white-box wborder-box">
<?php
$onearea .= "Order Details <br/>
<strong>Duration:</strong> 45 mins<br/>
<strong>Employee:</strong> Cristina @ HDC<br/>
<strong>SubTotal:</strong> £85.00<br/>
<strong>Total</strong>: £85.00<br/>
<strong>Valid until</strong>: 2014-07-31<br/>";
$twoareas .= "Order Details <br/>
<strong>Duration:</strong> 45 mins<br/>
<strong>Employee:</strong> Cristina @ HDC<br/>
<strong>SubTotal:</strong> £165.00<br/>
<strong>Total</strong>: £165.00<br/>
<strong>Valid until</strong>: 2014-07-31<br/>";
?>
<h5>Order Details</h5>
<div class="radio-inline areasform">
<label for="optionsAreas1" name="oa1label" class="control-label">One Area</label>
<input type="radio" name="optionsAreas" id="optionsAreas1" value="<?php echo ($onearea); ?>">
</div>
<div class="radio-inline areasform">
<label for="optionsAreas2" class="control-label">Two Areas</label>
<input type="radio" name="optionsAreas" id="optionsAreas2" value="<?php echo ($twoareas); ?>">
</div>
<p><strong>Cryogenic Lipolysis Therapy</br>45-minute session per week for three months, with 13 sessions in total.</strong></p>
<div id="hideOneArea">
<h5>One Area</h5>
<dl class="dl-horizontal">
<dt><small>Duration</small></dt>
<dd><small>45 mins</small></dd>
<dt><small>Employee</small></dt>
<dd><small>Cristina @ HDC</small></dd>
<dt><small>SUBTOTAL</small></dt>
<dd><small>£85.00</small></dd>
<dt><small>TOTAL</small></dt>
<dd><small>£85.00</small></dd>
</dl>
</div>
<div id="hideTwoAreas">
<h5>Two Areas</h5>
<dl class="dl-horizontal">
<dt><small>Duration</small></dt>
<dd><small>45 mins</small></dd>
<dt><small>Employee</small></dt>
<dd><small>Cristina @ HDC</small></dd>
<dt><small>SUBTOTAL</small></dt>
<dd><small>£165.00</small></dd>
<dt><small>TOTAL</small></dt>
<dd><small>£165.00</small></dd>
</dl>
</div>
<p><strong>Payment method:</strong></p>
<div class="radio">
<label>
<input type="radio" name="optionsRadios" id="optionsRadios1" value="Pay At Clinic" checked>Pay At Clinic
</label>
</div>
<div class="radio">
<input type="radio" name="optionsRadios" id="optionsRadios2" value="Other Way" class="hidden">
</div>
<p><strong>Available until: 2014-07-31</strong></p>
<input name="ref" type="hidden" value="<?php $datei = fopen("library/countlog.txt","r");
$count = fgets($datei,1000);
fclose($datei);echo "3COMPAREWLC".$count."-".date('ymd');?>">
</div>
<div class="col-md-8">
<div class="row">
<div class="col-md-12 white-box wborder-box">
<h5>Your contact details</h5>
<div class="form-group">
<label for="inputEmail3" class="col-sm-4 control-label"><small>Your full name*</small></label>
<div class="col-sm-8">
<input type="text" name="name" class="form-control" id="inputEmail3" placeholder="Full Name" value="<?php echo $name; ?>" required>
</div>
</div>
<div class="form-group">
<label for="inputPassword3" class="col-sm-4 control-label"><small>Your email address*</small></label>
<div class="col-sm-8">
<input type="email" name="email" class="form-control" id="inputPassword3" placeholder="Email" required>
</div>
</div>
<div class="form-group">
<label for="number" class="col-sm-4 control-label"><small class="redtext">Mobile Number*</small></label>
<div class="col-sm-6">
<input type="tel" name="number" class="form-control" id="number" placeholder="Mobile Number" required>
</div>
</div>
<div class="form-group">
<div class="col-sm-12 col-xs-12 alinharr">
<button type="submit" name="submit" class="btn btn-lg btn-danger btn-shadow" value="Send">
<div class="row">
<div class="col-sm-8 col-xs-8">
<small class="sizebtn">Click Here to</small></br><strong class="sizebtnlg">Complete Your Order</strong>
</div>
<div class="col-sm-4 col-xs-4">
<i class="fa fa-gift fa-lg fa-3x"></i>
</div>
</div>
</button>
</div>
</div>
<div class="form-group">
<div class="col-sm-12">
<div class="checkbox">
<label>
<input type="checkbox" name="newsletter" value="Yes" id="newsletter" checked> <small>Keep me in the loop about special offers and the latest community news</small>
</label>
<input type="checkbox" class="hidden" name="newsletter" value="No" id="newsletter1">
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</form>
The problem is in the form, because it is not taking the entered values, so send the email without the data.
UPDATE:
I can send the data now, minus the data from OptionsAreas
and is not sending email
for the customer. Another problem is that the OptionsAreas
is not hiding values in the form. If I select one view, the other should not appear.
Somebody please help me
Try debugging your script, if you give an echo $_POST['name'], it appears something ?
– user7605
Thank you. I can echo $_POST['name'] to get you to pick up values other than Options Areas. I still can not send email to the customer
– Carlos Maia