PHP Vaildation and DatePicker Code

Here is the code for the PHP Form Vaildation & the datepicker Vaildation… I have just remove some of the Vaildation, the Email field and Message comment field from the code because its a repeat of the others and makes the code here long to read.

All the code works…but if i dont select a date from the picker it still gets sent and emailed, with no date…

Running each Validation on there own web page they both work, but like i say run them together and just the Php works.

<?php

// Set email variables
$email_to = ‘andy_tvw@yahoo.co.uk’;
$email_subject = ‘Form submission’;

// Set required fields
$required_fields = array(‘fullname’,‘fulladdress’,‘email’,‘comment’);

// set error messages
$error_messages = array(
‘fullname’ => ‘Please enter a Name to proceed.’,
‘fulladdress’ => ‘Please enter your Contact Address to proceed.’,
‘email’ => ‘Please enter a valid Email Address to continue.’,
‘comment’ => ‘Please enter your Message to continue.’
);

// Set form status
$form_complete = FALSE;

// configure validation array
$validation = array();

// check form submittal
if(!empty($_POST)) {
// Sanitise POST array
foreach($_POST as $key => $value) $_POST[$key] = remove_email_injection(trim($value));

// Loop into required fields and make sure they match our needs
foreach($required_fields as $field) {		
	// the field has been submitted?
	if(!array_key_exists($field, $_POST)) array_push($validation, $field);
	
	// check there is information in the field?
	if($_POST[$field] == '') array_push($validation, $field);
	
	// validate the email address supplied
	if($field == 'email') if(!validate_email_address($_POST[$field])) array_push($validation, $field);
}

// basic validation result
if(count($validation) == 0) {
	// Prepare our content string
	$email_content = 'New Website Comment: ' . "\


";

	// simple email content
	foreach($_POST as $key =&gt; $value) {
		if($key != 'submit') $email_content .= $key . ': ' . $value . "\

";
}

	// if validation passed ok then send the email
	mail($email_to, $email_subject, $email_content);
	
	// Update form switch
	$form_complete = TRUE;
}

}

function validate_email_address($email = FALSE) {
return (preg_match(‘/[1]+@([-a-z0-9]+\.)+[a-z]{2,}$/i’, $email))? TRUE : FALSE;
}

function remove_email_injection($field = FALSE) {
return (str_ireplace(array(“\r”, "
", “%0a”, “%0d”, “Content-Type:”, “bcc:”,“to:”,“cc:”), ‘’, $field));
}

?>
<!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” xml:lang=“en” lang=“en”>
<head>

&lt;link href="contact/css/contactform.css" rel="stylesheet" type="text/css" /&gt;

&lt;link href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.2/themes/redmond/jquery-ui.css" rel=		"stylesheet" type="text/css"/&gt;

&lt;script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/mootools/1.3.0/mootools-yui-compressed.js"&gt;&lt;/script&gt;


&lt;script src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.js"&gt;&lt;/script&gt;

&lt;script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.2/jquery-ui.js"&gt;&lt;/script&gt;
&lt;script src="http://jzaefferer.github.com/jquery-validation/jquery.validate.js"&gt;&lt;/script&gt;

&lt;script type="text/javascript"&gt;
	var nameError = '&lt;?php echo $error_messages['fullname']; ?&gt;';
	var fulladdress ='&lt;?php echo $error_messages['fulladdress']; ?&gt;';
	var emailError = '&lt;?php echo $error_messages['email']; ?&gt;';
	var commentError = '&lt;?php echo $error_messages['comment']; ?&gt;';

function MM_preloadImages() { //v3.0
var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
if (a[i].indexOf(“#”)!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}
</script>

<title>Reservations and booking form</title>
</head>

<body onload=“MM_preloadImages(‘contact/images/x.png’)”>
<body style=“font-size:62.5%;”>
<div id=“formWrap”>
<h2>Bookings & Reservations</h2>
<div id=“form”>
<?php if($form_complete === FALSE): ?>
<form action"contact.php" method=“post” id=“comments_form”>
<div class=“row”>
<div class=“label”>Full Name</div> <!–end . label –>
<div class=“input”>
<input type=“text” id=“fullname” class=“detail” name=“fullname” value="<?php echo isset($_POST[‘fullname’])? $_POST[‘fullname’] : ‘’; ?>
" />
<?php if(in_array(‘fullname’, $validation)): ?><span class=“error”><?php echo $error_messages[‘fullname’]; ?></span><?php endif; ?>
</div> <!-- end . input –>
<div class=“context”>Message here</div> <!–end . context –>
</div> <!-- end .row –>
<!-- End of Your Name Block –>

<!-- Start of Your Address Block –>
<div class=“row”>
<div class=“label”>Home Address</div> <!–end . label –>
<div class=“input”>
<input type=“text” id=“fulladdress” class=“detail” name=“fulladdress” value="<?php echo isset($_POST[‘fulladdress’])? $_POST[‘fulladdress’] : ‘’; ?>
" /><?php if(in_array(‘fulladdress’, $validation)): ?><span class=“error”><?php echo $error_messages[‘fulladdress’]; ?></span><?php endif; ?>
</div> <!-- end . input –>
<div class=“context”>e.g. 123 Main Street </div> <!–end . context –>
</div> <!-- end .row –>
<!-- End of Your Address Block –>

<!-- Start of datepicker –>

<script>
$(document).ready(function()
{
$(“#datepicker”).datepicker();
});
</script>

<script>
$(function() {
$(‘#myForm’).validate({
rules: {
‘Your Check In Date Is’: ‘required’,
‘Your Check Out Date Is’: ‘required’
}
});
$.datepicker.setDefaults({dateFormat: ‘DD, d MM yy’, autoSize: true,
minDate: -0, maxDate: ‘+1M +05D’, showOn: ‘button’,
buttonImage: ‘/contact/images/calendar.gif’, buttonImageOnly: true, });
$(‘input[name=“Your Check In Date Is”],input[name=“Your Check Out Date Is”]’).datepicker();
});
</script>

<!-- End of datepicker –>

    &lt;form method="post" id="myForm"&gt;
	&lt;label for="datepicker"&gt;Select Your Check In Date&lt;/label&gt;
	&lt;input name="Your Check In Date Is" maxlength="30"  class="text ui-widget-content ui-corner-all" /&gt;

	&lt;label for="datepicker"&gt;Select Your Check Out Date&lt;/label&gt;
    &lt;input name="Your Check Out Date Is" maxlength="30" class="text ui-widget-content ui-corner-all" /&gt;

<!-- Start of submit –>
<div class=“submit”>
<input type=“submit” id=“submit” name=“submit” value=“Click To Comfirm Your Booking Details” />
</div> <!-- end .submit –>
<!-- End of Submit –>

</form>

<div id=“footer”>
<p>© <?php echo date(‘Y’); ?>Copyright Webber’s InterConinental Tours… All rights reserved. ha ha ha</p>
</div><!-- end footer –>
<?php else: ?>
<p style=“font-size:35px; font-family:Arial, Helvetica, sans-serif; color:#255E67; margin-left:25px;”>You are now being redirected to the secure payment site</p>

<script type=“text/javascript”>
setTimeout(‘ourRedirect()’, 5000)

function ourRedirect(){
location.href=‘http://philippines4u.co.uk/PayPal Manila Condo form.html’
}

</script>

<?php endif; ?>

</div> <!–end #form –>
</div> <!-- end formWrap –>

</body>
</html>


  1. ^@\s ↩︎

The main problem that I see there is that you have one form nested inside of another form, which is illegal.

Thanks paul for your answer.

So as nested forms are illegal, how would you go about this, do i forget the php form,I see that html5 as a work around for nested form but guessing not with Php.How would a hotel website get around this problem, without having each type of form on a different page, which i didnt want to do.

Well normally the fieldset tag is used to break up a form into separate parts.

So if i change the form elements into fieldset for the php code and do the same for the picker it should all work you think

You’ll be one step closer towards it working - that’s for sure.

Hello Paul
I have got it to work using the fieldset Tags as you said, placed one set of open/close fieldset tags onto the PHP form and the same for the picker, then had to move this call <form method=“post” id=“myForm”> from the picker’s form and place it above the PHP form action post Call, and now it works and waits for all fields to be filled…

Is this what you would of done

That sounds similar, yes.