SitePoint Sponsor

User Tag List

Results 1 to 7 of 7
  1. #1
    SitePoint Member
    Join Date
    Dec 2012
    Location
    UK
    Posts
    15
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    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: ' . "\n\n";

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

    // 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('/^[^@\s]+@([-a-z0-9]+\.)+[a-z]{2,}$/i', $email))? TRUE : FALSE;
    }

    function remove_email_injection($field = FALSE) {
    return (str_ireplace(array("\r", "\n", "%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>


    <link href="contact/css/contactform.css" rel="stylesheet" type="text/css" />

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

    <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/mootools/1.3.0/mootools-yui-compressed.js"></script>


    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.js"></script>

    <script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.2/jquery-ui.js"></script>
    <script src="http://jzaefferer.github.com/jquery-validation/jquery.validate.js"></script>

    <script type="text/javascript">
    var nameError = '<?php echo $error_messages['fullname']; ?>';
    var fulladdress ='<?php echo $error_messages['fulladdress']; ?>';
    var emailError = '<?php echo $error_messages['email']; ?>';
    var commentError = '<?php echo $error_messages['comment']; ?>';
    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 &amp; 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 -->

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

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



    <!-- 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>&copy; <?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>

  2. #2
    Unobtrusively zen silver trophybronze trophy
    paul_wilkins's Avatar
    Join Date
    Jan 2007
    Location
    Christchurch, New Zealand
    Posts
    14,717
    Mentioned
    103 Post(s)
    Tagged
    4 Thread(s)
    The main problem that I see there is that you have one form nested inside of another form, which is illegal.
    Programming Group Advisor
    Reference: JavaScript, Quirksmode Validate: HTML Validation, JSLint
    Car is to Carpet as Java is to JavaScript

  3. #3
    SitePoint Member
    Join Date
    Dec 2012
    Location
    UK
    Posts
    15
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    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.

  4. #4
    Unobtrusively zen silver trophybronze trophy
    paul_wilkins's Avatar
    Join Date
    Jan 2007
    Location
    Christchurch, New Zealand
    Posts
    14,717
    Mentioned
    103 Post(s)
    Tagged
    4 Thread(s)
    Quote Originally Posted by Andy16296 View Post
    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.
    Programming Group Advisor
    Reference: JavaScript, Quirksmode Validate: HTML Validation, JSLint
    Car is to Carpet as Java is to JavaScript

  5. #5
    SitePoint Member
    Join Date
    Dec 2012
    Location
    UK
    Posts
    15
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    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

  6. #6
    Unobtrusively zen silver trophybronze trophy
    paul_wilkins's Avatar
    Join Date
    Jan 2007
    Location
    Christchurch, New Zealand
    Posts
    14,717
    Mentioned
    103 Post(s)
    Tagged
    4 Thread(s)
    Quote Originally Posted by Andy16296 View Post
    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.
    Programming Group Advisor
    Reference: JavaScript, Quirksmode Validate: HTML Validation, JSLint
    Car is to Carpet as Java is to JavaScript

  7. #7
    SitePoint Member
    Join Date
    Dec 2012
    Location
    UK
    Posts
    15
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    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

  8. #8
    Unobtrusively zen silver trophybronze trophy
    paul_wilkins's Avatar
    Join Date
    Jan 2007
    Location
    Christchurch, New Zealand
    Posts
    14,717
    Mentioned
    103 Post(s)
    Tagged
    4 Thread(s)
    Quote Originally Posted by Andy16296 View Post
    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.
    Programming Group Advisor
    Reference: JavaScript, Quirksmode Validate: HTML Validation, JSLint
    Car is to Carpet as Java is to JavaScript


Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •