Username
Password
Remember Me
01How did I create my first form?
Install ChronoForms then go to Admin | Components | Chrono Forms | Forms Management
If you click New you will see a row of tabs that allow you to configure your own form from scratch. This can be tricky to start with so we suggest that you download the Basic Form from the Downloads area here.
If you click the 'Restore' button on the Forms Manager toolbar you will be able to upload this form onto your site. It is a very simple form with just name and email fields but will let you see the basic ChronoForms settings on the General and Form Code tabs.
Modify this basic form to work on your site - you will probably need to change the 'To', 'From' and 'Reply To' email addresses and names.
Before you make any other changes make sure that this form works. It is much easier to debug this simple form than more complicated ones. We know that the code will work and the only issues usually are configuring email on your site.
To create a form of your own it can be helpful to copy the basic form in the Forms Manager, then rename and edit the copy to meet your needs.
Please see the tutorials page for more information).
02Can I edit my form later?
Yes, by going to the same menu as above and click the Edit icon.
If you change field names, or add or delete fields, you will need to backup, regenerate and restore your data. Please see Forms are not getting saved into the data table for further information.
03What is a 'form name'?
Your form name is a UNIQUE identifier for each form which must be set in the ChronoForms Form Manager.
When creating a form name use [a-z][A-Z][0-9] and underscore only, no dashes, spaces or other special characters and always start with a letter.
NB when ChronoForms creates the form html it adds a 'ChronoContact_' prefix. You will need to use this long name if you want to reference the form name in your JavaScript.
04What is 'Form HTML'?
It is the HTML code which will be rendered in the page body when you look at your form in you Joomla website. It can contain any HTML code you like except for the
Warning : every input item on your form must have a "unique" name. If you don't have a name for for your field then it won't be submitted. And if you use the same name for more than one field then only one of them will be submitted correctly.
This is good and will be sent as a result
This is not good, there is no 'name' attribute.
This is not good, only the last 'firstname' value will be sent.
This is not good. If you don't put quotes round the attribute values then ChronoForms will not be able to process the field and no results will be sent.
05Can I use CSS classes in the HTML code?
06Where do I put my CSS classes?
07Can I use PHP statements inside my HTML code?
08Can I just display some code with Form action?
09How do I use JavaScript with my form?
Put your JavaScript in the Form Javascript field on the Form Code tab. But leave off the <script . . .> & </script> tags as ChronoForms will add these.
Most JavaScript validation will work with ChronoForms but you may need to make some adjustments to make sure that the form name is correctly entered. ChronoForms will rename your form by adding a ChronoContatact_ prefix so 'my_form' becomes 'ChronoContact_my_form'.
Often it's simplest to add
var form = document.ChronoContact.my_form;
near the beginning of your script so that you can use 'form' to refer to it from then on (saves a lot of typing).
If your script is called by the Submit button then you may also need to add the JavaScript function call into the Form tag attachment field on the General tab.
NB Joomla 1.5 loads the MooTools script library by default. If anything on your page loads another script library: Prototype, JSQuery, etc. you may well get JavaScript conflicts that can be hard to diagnose. The advantage is that you may be able to find a MooTools based script to use instead.
10How do I display a 'Thank you' page?
There are two main ways to show a 'Thank you' page after a form is submitted.
If you have another Joomla page that you want to redirect users to then you can put the URL in the Redirect URL field on the Form URLs tab. In practice you can put any valid URL in here.
If there is no entry in this field then ChronoForms will display the form page with no content (that is the same URL but the form will not display). You can display a Thank you message on this page by putting the code into the On Submit code - after sending email field on the Form Code tab. You can include html and PHP code here and can include values from the submitted form by using <?php echo $_POST['fieldname'] ?>
<?php echo $_POST['fieldname'] ?>
To show a Thank You page and then redirect please you can use code like this in the 'On Submit after email' box:
<?php global $mainframe; $custom_tag = '<meta http-equiv="refresh" content="5; url=http://www.example.com" >'; $mainframe->addCustomHeadTag($custom_tag); ?> <p>Thank You.</p> <p>Add your text for the thank you page here.</p>
11I want the form results to be emailed to some special email other than the one on the global configuration, how ?
12How do I send the email to several addresses?
By default the e-mail is sent to the address in the Email Address(es) field on the General tab. You can add more than one address to the field in a comma separated list e.g. user1@example.com, user2@example.com
If the name of an input field is entered in the Email field field lower down then the e-mail will also be sent to this address. This field can also contain an comma separated list of e-mail addresses (or the name of an array of addresses).
If both fields are used the e-mail will be sent to all the addresses, if either are blank, then the other will be used.
13Can I change my email subject?
Yes, do this by changing the Email Subject field of the form in the ChronoForms Form Manager 'General' tab.
You can also use a form field to set the email Subject but putting the field name in the 'Subject field'. The value of this field will then be used as the email Subject.
14Can I run PHP code when the form is submitted?
Yes you can, you just need to put your code in the On Submit code field in the Form Code tab.
This feature was first added to allow users to add the form results to a database. We've since added this feature to ChronoForms but the On Submit code field is still useful to process form results.
There are two On Submit code fields, they both work in the same way but the first is executed before the email is sent and the second after the email is sent (but before data is saved to the database).
15Can I change the form action URL?
To change the form action URL put the new URL into the Submit URL field on the Form URLs tab.
You might want to do this if you want the form data to be sent to some other webservice (e.g. to PayPal, your payment processor, etc.) . . .
16What will the results email look like?
17How do I customize my results email?
18My email template doesn't work
19My checkbox fields aren't working
Checkbox fields need to have return an array of results, to do this the field name must be of the form name='field_name[]' with the two square brackets at the end.
name='field_name[]'
If you don't do this then only the last checkbox ticked will be returned.
You must use the same array name e.g. name="field_name[]" for every related checkbox.
20Some fields don't return results
The most common cause is that you have some problem with field names in your form html. Please make sure that your field names:
21My textarea has strange code in it
Textarea are different to input fields and need both opening and closing tags . You cannot use .
Anything between the two tags will be taken as a default value for the textarea e.g. Please enter some text here. Note also that there is no 'value' attribute for a textarea.
22My file won't upload
23My image won't upload
24Posting about a problem
If you want to post in the forums about a problem with ChronoForms please be as clear and specific as you can about what is happening and what your settings are. It will probably be helpful to have an image of the General tab for the form and any related code - html, template, JavaScript, etc.
Please check the troubleshooting FAQs to see if there are any obvious fixes to try.
If you post code that's any longer that a few words please use [code][/code] tags and try to remove any unnecessary formatting or styling code. Keep it as simple as possible to de-bug, then re-add the styling, etc. when you have the basic form working. This also makes it much easier for us to look at your code and therefore more likely that we can help.
Thanks.
25Please can you help me?
We will do our best to help you with ChronoForms problems; and we can sometimes help with problems in using html, css, MySQL, Joomla, JavaScript and all the other elements that go into using forms on your site.
Please post your problem in the forum as clearly and specifically as possible. Post an image of your General tab and any html, JavaScript or template code that relates to the problem.
Unfortunately, we can only spend limited amounts of time on problems that aren't directly related to ChronoForms. If you have a more complicated issue or some special development that you'd like us to help with then please use the Contact tab above to ask Max if that is possible, and how much it might cost.
26How do I purchase a license?
Thank you for thinking about a license, when you buy it you help keep our extensions and support going and allow us to add new features.
To buy your license please click here. The license terms are different per extension but its mainly to be able to use the extension without showing the ChronoEngine link at the bottom of your pages.
we have an ultimate license for any extension with limited one, please contact us for more info.
27How can I support ChronoForms?
Thanks for the offer! There are several ways you can support ChronoForms and we'll be grateful whatever you choose to do.
28How do I upload files?
File uploads are supported by later versions of ChronoForms, if you don't see a 'File Uploads' tab in the Forms Manager then please upgrade.
In the File Uploads tab:
In the General tab put enctype='multipart/form-data' in the Form Tag attachment field.
Make sure that your Form HTML has one or more 'file' inputs and that the name(s) are identical to the names you entered in the File Uploads tab.
Note: Your files will be uploaded to the {yoursite}components\com_chronocontact\upload folder which is created when ChronoForms is installed.
29File uploads aren't working
Check that you have put enctype='multipart/form-data' in the Form tag attachment field on the General tab.
Check that you have entries in all four fields on the File Uploads tab (no blanks).
Check that you have Enable Uploads set to 'Yes'.
Check in your configuration.php file that there is a value set for $mosconfig_fileperms; if it is blank or set to '0000' please set it to 0644.
Check that "chmod new files" is ticked in Joomla's Global Configuration.
30ImageVerification doesn't work
To use ImageVerification you must turn it ON in the AntiSpam tab and add {imageverification} to your form code where you want the verification to appear.
Note, at the moment the only way to change the layout of the ImageVerification block is to hack the ChronoForms code
ImageVerification depends on some PHP features being installed on your site. From version 2.3 there is a diagnostic on the Anti Spam tab that checks for these and will not enable ImageVerification if they are not installed.
If all is well there and images still do not display then you can get more 'informative' error reports if you Change the header at line 17 in chrono_verification.php from header("Content-type: image/png"); to header("Content-type: text/html");. Then point your browser directly to that file i.e. http://www.example.com/components/com_chronocontact/chrono_verification.phpIt will show PHP errors on things php cannot handle. This should provide enough input to fix the problem.
Remember to change the header back afterwards.
31How can I safely show a list of e-mail addresses?
One ChronoForms user wanted to offer form users a drop-down list of e-mail addresses that they could pick from and send the form results to - but they wanted to do it without putting the email addresses themselves on the form page.
We found a way to do this in two parts. First include the following in your Form HTML:
. . .Select the recipient you wish to contact:<select name="recipients"> <option value="em1">Name 1</option> <option value="em2">Name 2</option> <option value="em3">Name 3</option> . . . </select>. . .
Then enter this code in the 'On Submit code - before sending email' field:
For ChronoForms 3.1 and later:
<?php$emails_2 = array('em1'=>'sample1@email.com', 'em2'=>'sample2@email.com', 'em3'=>'name_3@example.com', . . .);$MyForm =& CFChronoForm::getInstance('form_name_here');$MyFormEmails =& CFEMails::getInstance($MyForm->formrow->id);$MyFormEmails->setEmailData(1, 'to', $emails_2[$_POST['recipients']]);?>
For ChronoForms v3.0 and late:
For ChronoForms 2.5.x and earlier
Thanks to deafjoomla.com for this FAQ
32I paid but didn't get the files package yet
When you pay for ChronoForms license we get notified by email about a new sale and the new order will appear at our sales list, once we get this email we will immediately send an email with Licensed version attached of the latest release of ChronoForms component and ChronoForms mambot, if you didn't get this email within few hours then something may be wrong with your mail server blocking our email, please contact us at the Contact US page from the top menu and include your valid free mail server email, something @gmail or @yahoo is highly preferred and we will resend the files again.
33How can I add a refresh button for ImageVerification
if ( trim($paramsvalues->imagever) == 'Yes' ) { $imver = '<input name="chrono_verification" type="text" id="chrono_verification" value=""> <img src="'.$mosConfig_live_site .'/components/com_chronocontact/chrono_verification.php">'; }
if ( trim($paramsvalues->imagever) == 'Yes' ) { $imver_url = $mosConfig_live_site .'/components/com_chronocontact/chrono_verification.php?imtype=' .$paramsvalues->imtype; $imver = '<script type="text/javascript"> function RefreshImageVer(imgverform) { var randnum = Math.random(); var newverimage = \''.$imver_url.'\'+randnum; imgverform.imgver.src=newverimage; } </script> <input name="chrono_verification" type="text" id="chrono_verification" value=""> <img src="'.$imver_url.'" name="imgver" id="imgver"> <input type="button" value="refresh" onclick="RefreshImageVer(this.form);" />'; }
34Excel export format problem
$datacol = 0; $rowcount = 1; foreach($datarows as $datarow){ foreach($table_fields as $table_field){ $sheet->writeString($rowcount, $datacol, $datarow->$table_field, 0); $datacol++; } $rowcount++; }
$datacol = 0; $rowcount = 1; foreach($datarows as $datarow){ foreach($table_fields as $table_field){ $sheet->writeString($rowcount, $datacol, $datarow->$table_field, 0); $datacol++; } $datacol = 0; // <- add this line $rowcount++; }
35How can I keep the form data with ImageVerification?
. . . name="field_name" value=" />" . . .
36My e-mails aren't being sent
This is one of the most common problems that users report and it can have several causes so please be patient and work though the testing with us.
You can find some possible solutions in the forums.
You can check the tutorials here too:
http://www.chronoengine.com/downloads/folder/43-ChronoForms%20Tutorials.html
First: Please check that your site can send e-mails. The easiest way to do this is to go to an article on the site and click the 'Email' button, complete the form addressed to an e-mail address that you can access and check that the email arrives safely.
If it isn't received then you may need to reconfigure your site using the setting on the Admin | Global Configuration | Mail tab. Note that test sites installed on a local computer often cannot send e-mails unless you have a mail server installed.
Please make sure that your site can send e-mails before the next step.
Second: In the ChronoForms Form Manager | General tab set 'Debug' to ON (and in the Anti_Spam tab set ImageVerification 'OFF') and save. Open your form in a second browser window and complete some of the fields as a trial. When you submit the form you should now see some debug information, a dummy e-mail, and a message telling you if the e-mail was sent or not.
Check that the dummy e-mail has valid entries in the 'From', 'From email', and 'To' fields. If any of these is incorrect or missing the e-mail fill fail. You will need to edit your form to fix any problems.
Some common problems are:
37How can I add the date and time to my email?
38Forms are not getting saved into the data table
ALWAYS BACK UP FIRST.
The most common reason for this is that you have added or removed some fields on your form. The correction is:
Using phpMyAdmin (or similar tool), browse the form results to be sure you are working with the correct form. (Chronoforms are called jos_chronoforms1, jos_chronoforms2, etc. Assuming your table prefix is "jos_".)
If there are old records in the form, export your existing table data to a backup sql file. Read this file to ensure this backup is complete. Delete the table from your database (using phpMyAdmin or similar).
In the Chronofoms component, go to the "auto generated tab" delete all code there. Paste your new HTML into the Form Code section. Then recreate a table for your form.
Next, go back to phpMyAdmin, refresh your table list, and open the table that has been recreated. It should have the same name as the original table you deleted.
Run the SQL query to insert the old data. If your SQL backup has instructions to create table, remove that part. If you have actually change field names, you will have to edit your backup file to correct the field names before your paste that SQL query to reinsert your data. If you have added or deleted fields, you will have to edit the SQL prior to reinserting your data.
It is difficult to work with SQL files using Notepad. A real editor is helpful. One of these that works well is Lite Edit.
39Validation fails with IE7
This problem usually shows itself because validation works OK in FireFox but fails in IE7 with an error message like "Error: Invalid source HTML for this operation".
There is a bug[?] with IE7's html implementation that does not allow <input> tags inside <p> tags (although this is valid html).
To avoid this make sure that your input fields are *not* inside <p></p> tags.
See here for a posting on Andrew Tetlaw's forum.
40What is the 'mambot'?
Joomla mambots are small plugins that scan Joomla content pages before they are published and are used, for example, to add images.
The ChronoForms mambot can be used to add a form to a content page. Make sure the mambot is installed and published, create your form as usual, then insert {chronocontact}my_form_name{/chronocontact} in the content page where you want the form to appear.
41The mambot doesn't work
42How can I add a form to a content page?
The ChronoForms mambot can be used to add a form to a Joomla content page.
Download the ChronoForms mambot from the download page here, make sure it is installed and published on your site, create your form as usual, then insert {chronocontact}my_form_name{/chronocontact} in the content page where you want the form to appear.
Notes:
43How can I show a form in a module?
Joomla modules are the small display boxes that you can put on more than one content page.
For recent versions of ChronoForms you can download and install the ChronoForms Module from the Downloads area here.
For older versions of ChronoForms a workaround is required that will let you do this:
Note, you may need to adjust various formatting settings to get the form looking good inside the smaller space of a module.
44How can I link to my merchant account?
It's a common requirement for commercial websites to want to link to a payment gateway like 'Authorise.net', or 'PayPal'. The exact way to do this will depend on the gateway specifications but here's a general solution that may give some help.
This code should post some variables to another URL and get you a response. What you do with the response will depend on your particular needs.
For example, the code below could be used in your "On submit after mail" box. It will post a variable called 'subscriber_ip' which the value of the submitter's IP address to an address : http://www.mydomain.com. You will need to work out which variables you need to send.
Note: To use this code you must have the CURL PHP extension on your webserver, this is very commonly installed. See PHPInfo to check.)
45How can I change the layout of the ImageVerifcation field?
46How can I create a tabbed form?
Here's an example of a very simple Tabbed form implementation in Joomla 1.0.x using the built in tab code. I've just split the parts of the test form across four tabs.
Here's the html:
<?php $tabs = new mosTabs(1); $tabs->startPane( 'test_form' ); $tabs->startTab( 'Tab 1', 'tab_1' ); ?> Name: <input name="name" value="" type="text"> <?php $tabs->endTab(); $tabs->startTab( 'Tab 2', 'tab_2' ); ?> E-mail: <input name="email" value="" type="text"> <?php $tabs->endTab(); $tabs->startTab( 'Tab 3', 'tab_3' ); ?> {imageverification} <?php $tabs->endTab(); $tabs->startTab( 'Tab 4', 'tab_4' ); ?> <input name="submit" value="Submit" type="submit"> <?php $tabs->endTab(); $tabs->endPane(); ?>
47How can I create a dynamic form?
You'll need to download v2.0 of the script. Now edit line 15 to read
var containerTag = 'DIV';
and copy the modified script to your site components/com_chronocontact/js/ folder.
Create a test form (I usually restore or copy the Basic Form) and put this code into the Form HTML box
<script type="text/javascript" src="/components/com_chronocontact/js/usableforms.js"></script> <h3>Get a Quote</h3> <p>Please select Floor, Room, and what service you want to be done!.</p> <input name="1st_floor" type="checkbox" value="No" rel="1st_floor" /> <label for="1st_floor">First floor</label> <div rel="1st_floor"> First Floor Room <input type="checkbox" name="1st_Bathroom" value="Yes" /> Bathroom <input type="checkbox" name="1st_Kitchen" value="Yes" /> Kitchen <input type="checkbox" name="1st_Living_room" value="Yes" /> Living room </div> <br /> <input name="Submit" type="submit" />
If you Save and click the form link you *should* find that the 'First Floor Room' checkboxes are hidden until you check the 'First Floor' box.
This works quite simply (there are fuller instructions on the Quirksmode site).
Each code block that you want hidden must be in a <div> with a rel attribute. In this case and the trigger to unhide this block must have the same rel attribute. See these lines
<input name="1st_floor" type="checkbox" value="No" rel="1st_floor" /> <label for="1st_floor">First floor</label> <div rel="1st_floor"> . . . </div>
That's pretty much all that's involved. I think that the blocks should nest OK. Please give it a go and let us know how it works.
Bob
PS If you use tables for your form layout then you can use <tr>s instead of <div>s but you'll need to change line 15 in the script back to
var containerTag = 'TR';
48Using the Profile Plugin
You can use the Profile PlugIn to display data from any Joomla database table. Backup first and test carefully.
First identify the table that you want to work with and find the exact names of the table columns that you want to use. You will also need the index column name to identify the particular record.
In this example we have an existing table with fields for job adverts and we want to show suitable records on a candidate form.
#1- create Form HTML which will be the template for your candidate, I guess it should be something like this :
Job Title : {job_title} Job desc. : {job_desc} . . . some other code . . .
the text inside the {} is the table columns name
Go to the Plugins tab for the form in the ChronoForms Form Manager and check the 'Profile Page' box.
Save the form.
Then, at the forms management page, check the form checkbox and click the Profile page icon at the top right.
You will have 3 fields to fill in:
#1- Table name : select the table which will be queried to get the data!
#2- REQUEST Parameter name : enter the parameter name which will go into URL for your candidate, I guess you will send a link to your candidate with something like this : . . . index.php?option=com_fireboard&func=view&id=5646
as you can see there is a parameter called 'id' to define the number, so in your case you will add the parameter name.
#3- Target field name: this is record id field name in the database, like the table primary column or whatever uniquely identifies the database record to be selected!
That's it, the URL including that id will show the form with information taken from that database record.
49ChronoForms form validation
ChronoForms has some Client side form validation built in. This is a script library developed by Andrew Tetlaw at Dexagogo. There are two library options 'prototype' and 'mootools' both work in the same way but choosing one or the other may help avoid conflicts with other Joomla Extensions. In general choose 'prototype' for Joomla 1.0.x and 'mootools' for Joomla 1.5.
In ChronoForms 3.0 it's also possible to do Server Side validation which is more secure and reliable than client side using PHP to write a function in the Server Side validation box.
Andrew Tetlaw's JavaScript validation script uses the MooTools 1.1 JavaScript library that is installed by Joomla 1.5 by default. The original version of Andrew's script is for the Prototype library that is the second option for ChronoForms but best used with Joomla 1.0. If you need help about extending the library functionality the documentation page is here and Andrew has a Google Groups forum at here. Andrew's script is good and pretty flexible. I think that there are some flaws in the MooTools adaptation that limit some of the options though. I found a better adaptation by clientcide but that uses the newer MooTools 1.2 which is not standard in Joomla 1.5 (though expected to be in Joomla 1.6).
It is possible to extend Andrew's script by writing additional validation tests and including them in the Form JavaScript. See this forum post for an example.
It is also possible to add customised error messages by including the message as the 'title' attribute of the field being checked.
<input type='text' name='some_field' value='' title='My error message' />
It's also possible to create your own error message elements: here is a quote from the documentation:
Instead of using the error message in the validator you can create your own validation advice page element. Now when the script is creating the advice element it first looks for an element with an id matching 'advice-' + validation-class-name + '-' + element.id and if not found then one matching 'advice-' + element.id . If your form element does not have an id attribute then match the name attribute. If it finds an element it will make that one appear. See the 'Donation' field in the demo for an example. If you make a custom validation advice element make sure you set the style to display : none .
50How can I get the info about my uploaded files?
File uploads are checked by ChronoForms to make sure that they meet the specifications set in the Upload Files tab for size and type.
They are then renamed to avoid problems with duplicate names and moved into the components/com_chronocontact/upload/ folder.
At the OnSubmit processing step the form information is in two separate places. The new form names and paths are in the $attachments array and can be accessed though:
$attachments['field_name']
This will give you a result like
D:\xampp\htdocs\joomla1.5/components/com_chronocontact/upload/20080617151517_test_doc.pdf
If you just want the file name then you need to use:
basename($attachments['field_name'])
The file type and size are accessible from the $_FILES array as
$_FILES['field_name']['size'] $_FILES['field_name']['type']
51Can you suggest other form components?
2CheckOut.com Inc. (Ohio, USA) is an authorized retailer forgoods and services provided by ChronoEngine.com