SAVE INFORMATION IN DB ON EACH MULTIPAGE STEP
Sometimes when filling out a large form it would come in handy if you can come back at a later point and continue where you last stopped. Unfortunately this is not a built in feature but it can be done with some custom coding and proper setup.
For this to work you will need to have a multipage form.
- Disable “Email notification” inside Form Properties as we will use Custom PHP email for this. You can read more on custom PHP emails here : https://crosstec.org/en/support/online-documentation/breezingforms/12-examples-scripts/746-new-custom-php-email-that-includes-attachment.html
- On your last form page create a hidden element, and give it name “finished”.
- In advance options from this element go to :
Initscript > Custom > check "Form Entry" > Press "Create Code framework and add this within the code framework. This will populate the hidden field with value of 1.
ff_getElementByName('finished').value=1;
- On each form page you will need to create a CUSTOM BUTTON.
This button will SAVE all the info to the DB, but WILL NOT trigger an email notification at least not until you come to the last page form where we will make a condition :
if($finished==1){ $this->sendMail(); }
Go to this buttons Advanced Options > Actionscript > Custom > Actions “Click” > Create code framework and add this code in between {}
switch (action) { case 'click': JQuery.ajax({ type: "POST", url: JQuery(element).closest("form").attr("action"), data: JQuery(element).closest("form").serialize(), success: function(data) { ff_validate_nextpage(); ff_getElementByName('finished').value=0; }); break; default:; } // switch
This will need to be done FOR ALL pages EXCEPT the LAST Page ( NOT THANK YOU PAGE ) where you need to add the following code :
switch (action) { case 'click': JQuery.ajax({ type: "POST", url: JQuery(element).closest("form").attr("action"), data: JQuery(element).closest("form").serialize(), success: function(data) { ff_validate_nextpage(); ff_getElementByName('finished').value=1; }); break; default:; } // switch
Now on final page right before the submit following code will set value to “1” which will make to form able to submit the info.
5) Finally you need to create a custom PHP email. Go to Form properties->advanced->more options->submit pieces->custom and put the following code into the box:
$this->execPieceByName('ff_InitLib'); $finished = ff_getSubmit('finished'); $fromname = 'Your from Name'; // /* Change to desired from name */ $recipient = 'your@email.com'; /* Change to Your Admin Email Address */ // Create the Body format for use in e-mail foreach ($this->maildata as $data) { if ($data[_FF_DATA_TYPE] != 'Hidden Input') $body .= $data[_FF_DATA_TITLE].": ".$data[_FF_DATA_VALUE].nl(); } if($finished==1){ $this->sendMail($from, $fromname, $recipient, $body); // This line actually emails the form. }
Note that in the code above we are transferring the variable 'finished' so we can test to see if it’s value iz 0 or 1. Based on that we do the following :
if($finished==1){ $this->sendMail($from, $fromname, $recipient, $body); // This line actually emails the form.
This will send the info saved previously as one email notification.
If you have additional questions about this please visit our Forums.