PHP Classes

File: test_paged_layout_form.php

Recommend this page to a friend!
  Classes of Manuel Lemos   PHP Forms Class with HTML Generator and JavaScript Validation   test_paged_layout_form.php   Download  
File: test_paged_layout_form.php
Role: Example script
Content type: text/plain
Description: Forms class example to render a inputs in tabbed pages with the paged layout plug-in
Class: PHP Forms Class with HTML Generator and JavaScript Validation
HTML forms generation and validation.
Author: By
Last change: Updated the submit button image.
Used HTML5.
Display tab buttons.
Date: 9 years ago
Size: 15,250 bytes
 

Contents

Class file image Download
<?php /* * test_paged_layout_form.php * * @(#) $Header: /opt2/ena/metal/forms/test_paged_layout_form.php,v 1.8 2014/09/28 07:17:25 mlemos Exp $ * */ /* * Include form class code. */ require("forms.php"); /* * Include form automatic vertical layout plug-in class to layout the * elements in each page. */ require("form_layout_vertical.php"); /* * Include form paged layout plug-in class to layout the form pages */ require("form_layout_paged.php"); /* * Include form animation plug-in class if you want to use the fade effect * when the pages are switched */ require("form_animation.php"); /* * Create a form object. */ $form=new form_class; /* * Define the name of the form to be used for example in Javascript * validation code generated by the class. */ $form->NAME="subscription_form"; /* * Use the GET method if you want to see the submitted values in the form * processing URL, or POST otherwise. */ $form->METHOD="POST"; /* * Make the form be displayed and also processed by this script. */ $form->ACTION=""; /* * Specify a debug output function you really want to output any * programming errors. */ $form->debug="trigger_error"; /* * Define a warning message to display by Javascript code when the user * attempts to submit the this form again from the same page. */ $form->ResubmitConfirmMessage= "Are you sure you want to submit this form again?"; /* * Output previously set password values */ $form->OutputPasswordValues=1; /* * Output multiple select options values separated by line breaks */ $form->OptionsSeparator="<br>\n"; /* * Output all validation errors at once. */ $form->ShowAllErrors=1; /* * CSS class to apply to all invalid inputs. * Set to a non-empty string to specify the invalid input CSS class */ $form->InvalidCLASS='invalid'; /* * Define the form field properties even if they may not be displayed. */ $form->AddInput(array( "TYPE"=>"text", "NAME"=>"email", "ID"=>"email", "MAXLENGTH"=>100, "Capitalization"=>"lowercase", "ValidateAsEmail"=>1, "ValidationErrorMessage"=> "It was not specified a valid e-mail address", "LABEL"=>"<u>E</u>-mail address", "ACCESSKEY"=>"E" )); $form->AddInput(array( "TYPE"=>"select", "NAME"=>"credit_card_type", "ID"=>"credit_card_type", "VALUE"=>"unknown", "SIZE"=>2, "OPTIONS"=>array( "unknown"=>"Unknown", "mastercard"=>"Master Card", "visa"=>"Visa", "amex"=>"American Express", "dinersclub"=>"Diners Club", "carteblanche"=>"Carte Blanche", "discover"=>"Discover", "enroute"=>"enRoute", "jcb"=>"JCB" ), "ValidationErrorMessage"=> "It was not specified a valid credit card type", "LABEL"=>"Credit card t<u>y</u>pe", "ACCESSKEY"=>"y" )); $form->AddInput(array( "TYPE"=>"text", "NAME"=>"credit_card_number", "ID"=>"credit_card_number", "SIZE"=>20, "ValidateOptionalValue"=>"", "ValidateAsCreditCard"=>"field", "ValidationCreditCardTypeField"=>"credit_card_type", "ValidationErrorMessage"=> "It wasn't specified a valid credit card number", "LABEL"=>"Credit card <u>n</u>umber", "ACCESSKEY"=>"n" )); $form->AddInput(array( "TYPE"=>"text", "NAME"=>"user_name", "ID"=>"user_name", "MAXLENGTH"=>60, "ValidateAsNotEmpty"=>1, "ValidationErrorMessage"=>"It was not specified a valid name", "LABEL"=>"<u>P</u>ersonal name", "ACCESSKEY"=>"P" )); $form->AddInput(array( "TYPE"=>"text", "NAME"=>"age", "ID"=>"age", "ValidateAsInteger"=>1, "ValidationLowerLimit"=>18, "ValidationUpperLimit"=>65, "ValidationErrorMessage"=>"It was not specified a valid age", "LABEL"=>"<u>A</u>ge", "ACCESSKEY"=>"A" )); $form->AddInput(array( "TYPE"=>"text", "NAME"=>"weight", "ID"=>"weight", "ValidateAsFloat"=>1, "ValidationLowerLimit"=>10, "ValidationErrorMessage"=>"It was not specified a valid weight", "LABEL"=>"<u>W</u>eight", "ACCESSKEY"=>"W" )); $form->AddInput(array( "TYPE"=>"text", "NAME"=>"home_page", "ID"=>"home_page", "ReplacePatterns"=>array( /* trim whitespace at the beginning of the text value */ "^\\s+"=>"", /* trim whitespace at the end of the text value */ "\\s+\$"=>"", /* Assume that URLs starting with www. start with http://www. */ "^([wW]{3}\\.)"=>"http://\\1", /* Assume that URLs that do not have a : in them are http:// */ "^([^:]+)\$"=>"http://\\1", /* Assume at least / as URI . */ "^(http|https)://(([-!#\$%&'*+.0-9=?A-Z^_`a-z{|}~]+\.)+[A-Za-z]{2,6}(:[0-9]+)?)\$"=>"\\1://\\2/" ), "ValidateRegularExpression"=> '^(http|https)\://(([-!#\$%&\'*+.0-9=?A-Z^_`a-z{|}~]+\.)+[A-Za-z]{2,6})(\:[0-9]+)?(/)?/', "ValidationErrorMessage"=>"It was not specified a valid home page URL", "LABEL"=>"H<u>o</u>me page", "ACCESSKEY"=>"o" )); $form->AddInput(array( "TYPE"=>"text", "NAME"=>"alias", "ID"=>"alias", "MAXLENGTH"=>20, "Capitalization"=>"uppercase", "ValidateRegularExpression"=>"^[a-zA-Z0-9]+$", "ValidateRegularExpressionErrorMessage"=> "The alias may only contain letters and digits", "ValidateAsNotEmpty"=>1, "ValidateAsNotEmptyErrorMessage"=>"It was not specified the alias", "ValidateMinimumLength"=>5, "ValidateMinimumLengthErrorMessage"=> "It was not specified an alias shorter than 5 characters", "LABEL"=>"Acce<u>s</u>s name", "ACCESSKEY"=>"s" )); $form->AddInput(array( "TYPE"=>"password", "NAME"=>"password", "ID"=>"password", "ONCHANGE"=>"if(value.toLowerCase) value=value.toLowerCase()", "ValidateAsNotEmpty"=>1, "ValidationErrorMessage"=>"It was not specified a valid password", "LABEL"=>"Passwor<u>d</u>", "ACCESSKEY"=>"d", "ReadOnlyMark"=>"********" )); $form->AddInput(array( "TYPE"=>"password", "NAME"=>"confirm_password", "ID"=>"confirm_password", "ONCHANGE"=>"if(value.toLowerCase) value=value.toLowerCase()", "ValidateAsEqualTo"=>"password", "ValidationErrorMessage"=> "The password is not equal to the confirmation", "LABEL"=>"<u>C</u>onfirm password", "ACCESSKEY"=>"C", "ReadOnlyMark"=>"********" )); $form->AddInput(array( "TYPE"=>"text", "NAME"=>"reminder", "ID"=>"reminder", "ValidateAsNotEmpty"=>1, "ValidateAsNotEmptyErrorMessage"=> "It was not specified a reminder phrase", "ValidateAsDifferentFrom"=>"password", "ValidateAsDifferentFromErrorMessage"=> "The reminder phrase may not be equal to the password", "LABEL"=>"Password <u>r</u>eminder", "ACCESSKEY"=>"r" )); $form->AddInput(array( "TYPE"=>"select", "MULTIPLE"=>1, "NAME"=>"interests", "ID"=>"interests", "SELECTED"=>array( "other" ), "SIZE"=>4, "OPTIONS"=>array( "arts"=>"Arts", "business"=>"Business", "computers"=>"Computers", "education"=>"Education", "entertainment"=>"Entertainment", "health"=>"Health", "news"=>"News", "politics"=>"Politics", "sports"=>"Sports", "science"=>"Science", "other"=>"Other" ), "ValidateAsSet"=>1, "ValidationErrorMessage"=>"It were not specified any interests.", "LABEL"=>"<u>I</u>nterests", "ACCESSKEY"=>"I" )); $form->AddInput(array( "TYPE"=>"checkbox", "NAME"=>"notification", "ID"=>"email_notification", "VALUE"=>"email", "CHECKED"=>0, "MULTIPLE"=>1, "ValidateAsSet"=>1, "ValidateAsSetErrorMessage"=> "It were not specified any types of notification", "LABEL"=>"E-<u>m</u>ail", "ACCESSKEY"=>"m", "ReadOnlyMark"=>"[X]" )); $form->AddInput(array( "TYPE"=>"checkbox", "NAME"=>"notification", "ID"=>"phone_notification", "VALUE"=>"phone", "CHECKED"=>0, "MULTIPLE"=>1, "LABEL"=>"P<u>h</u>one", "ACCESSKEY"=>"h", "ReadOnlyMark"=>"[X]" )); $form->AddInput(array( "TYPE"=>"radio", "NAME"=>"subscription_type", "VALUE"=>"administrator", "ID"=>"administrator_subscription", "ValidateAsSet"=>1, "ValidateAsSetErrorMessage"=> "It was not specified the subscription type", "LABEL"=>"Adm<u>i</u>nistrator", "ACCESSKEY"=>"i", "ReadOnlyMark"=>"[X]" )); $form->AddInput(array( "TYPE"=>"radio", "NAME"=>"subscription_type", "VALUE"=>"user", "ID"=>"user_subscription", "LABEL"=>"<u>U</u>ser", "ACCESSKEY"=>"U", "ReadOnlyMark"=>"[X]" )); $form->AddInput(array( "TYPE"=>"radio", "NAME"=>"subscription_type", "VALUE"=>"guest", "ID"=>"guest_subscription", "LABEL"=>"<u>G</u>uest", "ACCESSKEY"=>"G", "ReadOnlyMark"=>"[X]" )); $form->AddInput(array( "TYPE"=>"button", "NAME"=>"toggle", "ID"=>"toggle", "VALUE"=>"On", "ONCLICK"=> "this.value=(this.value=='On' ? 'Off' : 'On'); alert('The button is '+this.value);", "LABEL"=>"Toggle <u>b</u>utton", "ACCESSKEY"=>"b" )); $form->AddInput(array( "TYPE"=>"checkbox", "NAME"=>"agree", "ID"=>"agree", "VALUE"=>"Yes", "ValidateAsSet"=>1, "ValidateAsSetErrorMessage"=> "You have not agreed with the subscription terms.", "LABEL"=>"Agree with the <u>t</u>erms", "ACCESSKEY"=>"t" )); $form->AddInput(array( "TYPE"=>"submit", "ID"=>"button_subscribe", "NAME"=>"doit", "VALUE"=>"Submit subscription", "ACCESSKEY"=>"u" )); $form->AddInput(array( "TYPE"=>"image", "ID"=>"image_subscribe", "NAME"=>"doit", "SRC"=>"http://files.phpclasses.org/graphics/phpclasses/add.png", "ALT"=>"Submit subscription", "STYLE"=>"border-width: 0px;" )); /* * Hidden fields can be used to pass context values between form pages, * like for instance database record identifiers or other information * that may help your application form processing scripts determine * the context of the information being submitted with this form. * * You are encouraged to use the DiscardInvalidValues argument to help * preventing security exploits performed by attackers that may spoof * invalid values that could be used for instance in SQL injection attacks. * * In this example, any value that is not an integer is discarded. If the * value was meant to be used in a SQL query, with this attack prevention * measure an attacker cannot submit SQL code that could be used to make * your SQL query retrieve unauthorized information to abuse your system. */ $form->AddInput(array( "TYPE"=>"hidden", "NAME"=>"user_track", "VALUE"=>"0", "ValidateAsInteger"=>1, "DiscardInvalidValues"=>1 )); /* * Add several vertical layout inputs to automatically layout all inputs * in each page without additional HTML templates. */ $form->AddInput(array( 'ID'=>'personal', 'NAME'=>'personal', 'TYPE'=>'custom', "CustomClass"=>"form_layout_vertical_class", 'Inputs'=>array( 'email', 'credit_card_number', 'credit_card_type', 'user_name', 'age', 'weight', 'home_page', 'separator', 'agree', ), 'Data'=>array( 'separator'=>'<tr><td colspan="2"><hr /></td></tr>', ), 'Properties'=>array( 'credit_card_number'=>array( 'DefaultMark'=>'[Optional]' ), ), 'InvalidMark'=>'[Verify]', 'InputFormat'=> '<tr><th align="right">{label}:</th><td valign="top">{input}&nbsp;{mark}</td></tr>', )); $form->AddInput(array( 'ID'=>'identification', 'NAME'=>'identification', 'TYPE'=>'custom', "CustomClass"=>"form_layout_vertical_class", 'Inputs'=>array( 'alias', 'password', 'confirm_password', 'reminder', ), 'InvalidMark'=>'[Verify]', 'InputFormat'=> '<tr><th align="right">{label}:</th><td valign="top">{input}&nbsp;{mark}</td></tr>', )); $form->AddInput(array( 'ID'=>'preferences', 'NAME'=>'preferences', 'TYPE'=>'custom', "CustomClass"=>"form_layout_vertical_class", 'Inputs'=>array( 'interests', 'notification-header', 'email_notification', 'phone_notification', 'subscription-header', 'administrator_subscription', 'user_subscription', 'guest_subscription', 'toggle', ), 'Data'=>array( 'notification-header'=> '<tr><th colspan="2">When approved, receive notification by:</th></tr>', 'subscription-header'=> '<tr><th colspan="2">Subscription type:</th></tr>', ), 'Properties'=>array( 'interests'=>array( 'InputFormat'=> '<tr><th align="right" valign="top">{label}:</th><td valign="top">{input}&nbsp;{mark}</td></tr>' ), ), 'InvalidMark'=>'[Verify]', 'InputFormat'=> '<tr><th align="right">{label}:</th><td valign="top">{input}&nbsp;{mark}</td></tr>', )); /* * Add a paged layout input to layout the pages of inputs */ $form->AddInput(array( 'ID'=>'layout', 'NAME'=>'layout', 'TYPE'=>'custom', 'CustomClass'=>'form_layout_paged_class', 'Pages'=>array( 'personal'=>array( 'Name' => 'Personal' ), 'identification'=>array( 'Name' => 'Identification' ), 'preferences'=>array( 'Name' => 'Preferences' ), ), 'AutoAdjustSize'=>1, 'FadePagesTime'=>0.25, 'ShowTabs'=>1 )); /* * Load form input values eventually from the submitted form. */ $form->LoadInputValues($form->WasSubmitted()); /* * Empty the array that will list the values with invalid field after * validation. */ $verify=array(); /* * Check if the global array variable corresponding to hidden input field * is defined, meaning that the form was submitted as opposed to being * displayed for the first time. */ if($form->WasSubmitted()) { /* * Therefore we need to validate the submitted form values. */ if(($error_message=$form->Validate($verify))=="") { /* * It's valid, set the $doit flag variable to 1 to tell the form is ready * to processed. */ $doit=1; } else { /* * It's invalid, set the $doit flag to 0 and encode the returned error * message to escape any non-ASCII ISO-latin 1 characters and HTML special * characters. */ $doit=0; $error_message=nl2br(HtmlSpecialChars($error_message)); } } else { /* * The form is being displayed for the first time, so it is not ready to * be processed and there is no error message to display. */ $error_message=""; $doit=0; } if($doit) { /* * The form is ready to be processed, just output it again as read only to * display the submitted values. A real form processing script usually * may do something else like storing the form values in a database. */ $form->ReadOnly=1; } if(!$doit) { if(strlen($error_message)) { Reset($verify); $focus=Key($verify); } else $focus='email'; $form->ConnectFormToInput($focus, 'ONLOAD', 'Focus', array()); } $onload=HtmlSpecialChars($form->PageLoad()); ?><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>Test for Manuel Lemos' PHP form class with paged layout</title> <style type="text/css"><!-- .invalid { border-color: #ff0000; background-color: #ffcccc; } // --></style> <?php echo $form->PageHead(); ?> </head> <body onload="<?php echo $onload; ?>" bgcolor="#cccccc"> <h1 style="text-align: center">Test for Manuel Lemos' PHP form class with paged layout</h1> <hr /> <?php /* * Compose the form output by including a HTML form template with PHP code * interleaved with calls to insert form input field parts in the layout * HTML. */ $form->StartLayoutCapture(); $title="Form class with paged layout test"; $body_template="form_paged_layout_body.html.php"; require("templates/form_frame.html.php"); $form->EndLayoutCapture(); /* * Output the form using the function named Output. */ $form->DisplayOutput(); ?> </body> </html>