| 
<?php
// Sample script for FiForms
 
 // This php script illustrates how to make a web form
 // based on a MySQL database table. Look through this script
 // to get an idea how to use FiForms.
 // To start with, you may want to just copy this file and
 // modify its contents to generate your own forms. Or just
 // get some ideas from it and then write your own FiForms.
 // First off, we need to include the main FiForms PHP file
 
 require_once("FiForms_FiForm.inc.php");    // call the include file
 
 // Then we need to declare a new form, give it a
 // name (for the HTML form), and tell it how to
 // connect with the database
 
 $frm = new FiForm(
 "SampleForm",            // Form Name
 "FiForms_sample",        // Database
 "addressbook"            // Table Name
 );
 
 // There are a lot of options on the form we can change
 // e.g. we can specify the exact SQL query used in the form
 // like this:
 
 // $frm->dataQuery = "SELECT FirstName, LastName, City from addressbook";
 
 // We can change the caption at the top of the page like this:
 $frm->caption = "FiForms Sample Data Entry Form";
 
 // Or we can disable navigation on the form like this:
 // $frm->noNavigation = TRUE;
 
 // Now we need to put input boxes onto the form. We need to create
 // iInputs as elements of the inputs[] array. There are several ways
 // to do this, depending on the amount of control we need to have
 // over the appearance of the form.
 // If we want, we can just tell FiForms to generate
 // inputs for all the fields in the table. This is the
 // quickest way to generate a form.
 
 $frm->autoinputs();
 
 // Of course, there's always at least one field we'd rather
 // the user didn't see, so we hide it like this.
 
 $frm->eraseIn('addressID');
 $frm->eraseIn('Notes');
 
 // Now we'll change the caption on one of the boxes
 $frm->renameIn('SSNo','Social Security #');
 
 // Actually, we'll just erase this one, on second thought
 $frm->eraseIn('SSNo');
 
 // If you don't want to automatically generate iInputs, or you want to
 // override the automatic settings, you can declare them individually,
 // like this:
 
 $frm->inputs["Birthday"] =
 new iDateText             // override an existing iText input with an
 // iDateText input
 ("Birthday",              // Field Name
 "Birthday");              // Caption
 
 // A shorthand way to do this would be to use the addIn function, like this:
 
 // $frm->addIn('iDateText','Birthday','Birthday');
 
 // The first parameter is the class of the input. The remaining parameters
 // are passed to the constructor of that input. The Field Name is used as
 // the array key.
 
 // There are a number of different types of iInput. Here is an
 // example using the iDBSelect, and html select or drop-down
 // box filled with data from an SQL query
 
 $frm->addIn('iDBSelect','State','','SELECT * FROM states;');
 
 // We only want to show the following controls in normal view
 // (hide them in sheetView)
 if($frm->sheetView == FALSE)
 {
 // Here is an example of an iTextArea. This is similar to iText,
 // only it uses a <textarea> tag to specify a block of text input
 $frm->addIn('iTextArea','Notes','',60,5);
 
 // Link to a subform
 $frm->addIn(
 'iSubform',
 'sample_subform.php',   // PHP Script File
 'Family Members',       // Caption
 'addrid=%addressID%',   // criteria
 600,                    // width
 230                     // height
 );
 
 // enable Sheet View in subform
 $frm->inputs["sample_subform.php"]->params = "sheetView=YES";
 
 // Note in the above example that, even though we used the addIn function
 // to create the subform, we can still reference it as an element
 // of the inputs[] array. The array index is always the second parameter
 // passed to the addIn function
 
 // Now just for fun, let's add a button link back to the index page
 // that opens in a popup window
 $frm->addIn(
 'iLink',
 '../index.html',
 'Home Page',
 'homewindow',
 'menubar=no,status=no,toolbar=no,width=750,height=550,scrollbars=yes',
 'button',
 'Go To Home...'
 );
 
 // Add a link to allow the user to view the report.
 $frm->addIn('iLink','sample_FiReport.xml','Preview Report');
 
 } // if sheetView == FALSE
 
 // The following line insures that the user can click back to normal view
 // after entering SheetView mode
 $frm->addIn('iLinkBack');
 
 // At this point, all of the inputs are defined. If we need to do more
 // server-side checking or processing of the data, this is the place
 // to do it.
 
 if($frm->inputs['Name']->valueToSave == "John Doe")
 {
 $frm->throwError(
 'John Doe, can\'t you think of a better name?');
 }
 
 // Finally, output the entire page to the client
 echo $frm->drawFormPage();                 // output the form
 
 ?>
 
 |