Breaking down a survey
|
Chong-ho (Alex) Yu, Ph.D., MCSE, CNE |
Problem:I want to post a long survey on the Web. But I would rather breaking down the survey into multiple pages than posting a lengthy page.
Solution:
Good thinking! This approach has at least two advantages:
- If the participant does not want to complete the entire survey at once, he can fill out parts of it and come back later to finish all the rest.
- If an error message pops up upon completion, the participant may be very frustrated. Checking errors page by page make the survey more user-friendly.
To create multiple pages for a survey, the workflow should look like the following figure. You can move the mouse over the left portion of the figure to reveal the function of those html pages (The mouseover function does not work in a Mac properly).
When a new user enters the survey, "new.htm" captures his unqiue user ID and create a new record for him. However, instead of returning "new_reply.htm," the value of the "format" tag is changed to "record_detail1.htm," which carries the first page of the survey
In "record_detail1.htm," the value of the "format" tag should be "record_detail2.htm." After the user has completed the first page and pressed the "submit" button, "record_detail2.htm," which is the second page of the survey, will be shown. All subsequent pages should be formatted in the same fashion except the last page. In the last page, "record_detail_reply.htm" can be retained to inform the user that the survey is completed.If the user pauses the process and decides to come back later, he can go to "search.htm" to retrieve his record by entering his unqiue ID. The query returns "Search_results.htm," which shows his status in each page. Users can click on the link to edit the finished part or to finish the unfilled part. (Please do not click on the links in the following table. They are not linked to any database) :
ID |
Page 1 |
Page 2 |
Page 3 |
Page 4 |
0809191111 |
"Page 1" to "Page 4" in the above table are flag variables. The following is the code for "Page 1": If no questions in page 1 are answered, return the value "unfilled," if there are some responses, return "in progress," otherwise, "completed." The codes for "page 2" to "Page 4" are similar:
If( IsEmpty(Q1) and IsEmpty(Q2) and IsEmpty(Q3) and IsEmpty(Q4) and IsEmpty(Q5) and IsEmpty(Q6) and IsEmpty(Q7) and IsEmpty(Q8) and IsEmpty(Q10) and IsEmpty(Q12a) and IsEmpty(Q12b) and IsEmpty(Q12c) and IsEmpty(Q12d) and IsEmpty(Q12e) and IsEmpty(Q12f) and IsEmpty(Q12g) and IsEmpty(Q12h) and IsEmpty(Q12i) and IsEmpty(Q12j) and IsEmpty(Q12k) and IsEmpty(Q12l), "unfilled", If( IsEmpty(Q1) or IsEmpty(Q2) or IsEmpty(Q3) or IsEmpty(Q4) or IsEmpty(Q5) or IsEmpty(Q6) or IsEmpty(Q7) or IsEmpty(Q8) or IsEmpty(Q10) or IsEmpty(Q12a) or IsEmpty(Q12b) or IsEmpty(Q12c) or IsEmpty(Q12d) or IsEmpty(Q12e) or IsEmpty(Q12f) or IsEmpty(Q12g) or IsEmpty(Q12h) or IsEmpty(Q12i) or IsEmpty(Q12j) or IsEmpty(Q12k) or IsEmpty(Q12l), "in progress", "completed")) |
However, if the user finishes a page but skips some questions, will the page be marked as "in progress" instead of "completed"? To avoid this problem, you should include the option "no comments" or "neutral" in every question.Do not use "required" as validation in FMP to avoid blank responses. When responsesin page 1 is submitted, fields in all other pages is also receiving values from the web at the same time. However, the user hasn't filled in questions in other pages yet. If the input for those questions are blank but the fields are required, the submission will fail. If you need to validate some required fields, do it on the client side by Javascript.
In addition, some questions may have an option called "other" and a separate field is used for participants to describe what "other" is. The "other" field could be empty if the user didn't select "other" in the previous question. Thus, the "other" field should not be included into the calculation of the flag value.
There is an alternative to set up this multiple-page survey. If you want the user to go to the summary table rather than the next page, you should set the "format" tag as "search_results.htm" on each record_detail page.
The above illustrated is simplified. The actual work is much more involved. Just be patient!
FMP Tips Contents
|
|