01 <?php
02 require_once 'HTML/QuickForm.php';
03 
04 // Template for header
05 $headerTemplate  = '<tr><td style="white-space: nowrap; background-color: blue;" align="center" ';
06 $headerTemplate .= 'valign="top" colspan="2"><font size="5" color="yellow">{header}</font></td></tr>';
07 
08 // Template for text fields (card holder and number)
09 $elTemplate  = '<tr><td align="right" valign="top">';
10 $elTemplate .= '<!-- BEGIN required --><font color="blue"><b>#</b></font><!-- END required --><b>{label}</b></td>';
11 $elTemplate .= '<td valign="top" align="left"><!-- BEGIN error --><span style="color: #ff0000">';
12 $elTemplate .= '{error}</span><br /><!-- END error -->{element}</td></tr>';
13 
14 // Instantiate form 
15 $myForm     = new HTML_QuickForm('CreditcardForm', 'POST');
16 // new text for mandatory fields
17 $myForm->setRequiredNote('<font color="blue"><b>#</b></font> are mandatory');
18 
19 // Add header and set new template
20 $myForm->addElement('header', '', 'Creditcarddata');
21 $myForm->setHeaderTemplate($headerTemplate);
22 
23 // Add text fields and set new template for each
24 $myForm->addElement('text', 'textCardholder',   'Cardholder:');
25 $myForm->addElement('text', 'textCardnumber', 'Cardnumber:');
26 $myForm->setElementTemplate($elTemplate, 'textCardholder');
27 $myForm->setElementTemplate($elTemplate, 'textCardnumber');
28 
29 // Array for credit card types
30 $cardtypes = array( 'visa' => 'VISA', 'master' => 'EuroCard', 'amex'   => 'American Express',);
31 // Drop-down menu for credit card types
32 $myForm->addElement('select', 'selectCardtypes', 'cardtype:', $cardtypes);
33 
34 // Arrays for months and years
35 $months = array (
36              '01'   => 'January',  '02' => 'February', '03'   => 'March',
37              '04'   => 'April',   '05' => 'May',     '06'   => 'June',
38              '07'   => 'July',    '08' => 'August',  '09'   => 'September',
39              '10'   => 'October', '11' => 'November','12'   => 'December'
40                 );
41 $years = array ( '2003' => '2003', '2004' => '2004', '2005' => '2005' );
42 
43 // Create group elements for months and years
44 $validTo[] = &HTML_QuickForm::createElement('select', 'selectValidMonth', NULL, $months);
45 $validTo[] = &HTML_QuickForm::createElement('select', 'selectValidYear',  NULL, $years);
46 
47 // group elements create for months and years
48 $myForm->addGroup($validTo, 'validToGroup', 'Valid to:');
49 
50 // Add Submit button
51 $myForm->addElement('submit', 'submitButton','Submit Data');
52 
53 // Credit card number have 16 digits
54 $cardnumber =& $myForm->getElement('textCardnumber');
55 $cardnumber->setMaxLength(16);
56 
57 // Validation rules: The two text fields must be occupied
58 // Credit card number must be numeric and comprise 16 digits
59 $myForm->addRule('textCardholder', 'Please enter cardholder', 'required');
60 $myForm->addRule('textCardnumber',  'Please supply card number', 'required');
61 $myForm->addRule('textCardnumber',  'Invalid card number',  'numeric');
62 $myForm->addRule('textCardnumber', 'Card number too short', 'minlength', 16);
63 
64 // Freeze form if validation succeeds 
65 if ( $myForm->validate() )
66 {
67    $myForm->removeElement('submitButton');
68    $myForm->freeze();
69 }
70 
71 // Display form 
72 $myForm->display();
73 
74 ?>