This shows you the differences between two versions of the page.
Both sides previous revision Previous revision | |||
en:create:transfer-responses [31.03.2016 16:26] hotaitde |
en:create:transfer-responses [01.04.2016 15:44] admin Formatting |
||
---|---|---|---|
Line 1: | Line 1: | ||
- | **Insert Answer Texts in Follow-up Questions** | + | ====== Insert Answer Texts in Follow-up Questions ====== |
- | Placeholders allow you to use participants‘ text inputs elsewhere in the questionnaire. This chapter provides you with a number of examples. | + | |
+ | [[::en:create:Placeholders|Placeholders]] allow you to use participants‘ text inputs elsewhere in the questionnaire. This chapter provides you with a number of examples. | ||
- | **Note:** If in a follow-up question you only want to display specific scale items or select options dependent on the participant’s response, please refer to Use Selected Items In Another Question. | + | **Note:** If in a follow-up question you only want to display specific scale items or select options dependent on the participant’s response, please refer to [[:en:create:filter-items]]. |
- | **Note:** If you haven’t worked with filters and PHP code, please refer to chapters Introduction to PHP and Problem Solution for Filters first. | + | **Note:** If you haven’t worked with filters and PHP code, please refer to chapters [[:de:create:php]] and [[:de:create:filter-solving]] first. |
- | **Use Single Answers** | + | ===== Use Single Answers ===== |
- | On page 2 the participant mentioned the name of a TV presenter in a text input field (tagging TX01_01). Answer validation was applied to ensure the participant did enter something. The entered name is now to be included in following question texts or scale items. | + | |
- | In the first step, create a placeholder replace() for the name, e. g. %tvpresenter. In order to do so, place the following PHP code on a page of the questionnaire following the text input question (e. g. in the example on page 3 or later): | + | On page 2 the participant mentioned the name of a TV presenter in a text input field (tagging ''TX01_01''). Answer validation was applied to ensure the participant did enter something. The entered name is now to be included in following question texts or scale items. |
- | + | In the first step, create a placeholder ''[[:en:create:functions:replace]]'' for the name, e. g. ''%presenter%''. In order to do so, place the following PHP code on a page of the questionnaire following the text input question (e. g. in the example on page 3 or later): | |
+ | <code php> | ||
+ | replace('%presenter%', 'TX01_01', 'response'); | ||
+ | </code> | ||
- | This placeholder can then be inserted anywhere in the questionnaire – of course, only after it was created via PHP code. For example, the question text of a question on page 3 could be as follows: | + | This placeholder can then be inserted anywhere in the questionnaire -– of course, only after it was created via PHP code. For example, the question text of a question on page 3 could be as follows: |
- | Please assess <strong>%tvpresenter%</strong> with regard to the following characteristics. | + | <code> |
+ | Please assess <strong>%presenter%</strong> with regard to the following characteristics. | ||
+ | </code> | ||
- | **Note:** It is not possible to use replace() to display the participant’s entry immediately on the same page of the questionnaire. This function would require JavaScript. | + | **Note:** It is not possible to use ''replace()'' to display the participant’s entry immediately on the same page of the questionnaire. This function would require [[:en:create:javascript|JavaScript]]. |
**Note:** In order to check if the placeholder functions correctly, you need to re-start the questionnaire from the beginning – or at least from the page with the text input field where the relevant name was entered (in the example on page 2). | **Note:** In order to check if the placeholder functions correctly, you need to re-start the questionnaire from the beginning – or at least from the page with the text input field where the relevant name was entered (in the example on page 2). | ||
- | **Tip:** Once a placeholder has been created, it remains valid for any following pages in the questionnaire. Repeating the PHP code on every page is not required. | + | **Tip:** Once a placeholder has been created, it remains valid for any following pages in the questionnaire. Repeating the PHP code on every page is __not__ required. |
**Tip:** The above described PHP code also allows you to enter predefined answers (e.g. from a multi-choice question) in follow-up questions. | **Tip:** The above described PHP code also allows you to enter predefined answers (e.g. from a multi-choice question) in follow-up questions. | ||
- | **Tip:** As an alternative, the participant’s entry can be read out via value() and subsequently be transferred to replace(). | + | **Tip:** As an alternative, the participant’s entry can be read out via ''[[:en:create:functions:value]]'' and subsequently be transferred to ''[[:en:create:functions:replace]]''. |
- | + | <code php> | |
+ | $name = value('TX01_01'); | ||
+ | replace('%presenter%', $name); | ||
+ | </code> | ||
+ | ===== Insert Several Answer Texts ===== | ||
- | **Insert Several Answer Texts** | + | A question of the question type "Text Input" (''TX01'') __or__ "Free Mention" (''TX02'') is presented to the participant. Up to 10 answers can be chosen. In a follow-up question (e. g. multiple selection, rank, scale) the answers are to be displayed as items or options. |
- | A question of the question type “Text Input” (“TX01”) or “Free Mention” (“TX02”) is presented to the participant. Up to 10 answers can be chosen. In a follow-up question (e. g. multiple selection, rank, scale) the answers are to be displayed as items or options. | + | |
- | The problem in this example is that the participant might complete only part of the input fields. Consequently, the follow-up questions must only display the relevant items/options. Also, it would mean a lot of extra work to write redirect() 10 times. A for-loop handles the iteration. | + | The problem in this example is that the participant might complete only part of the input fields. Consequently, the follow-up questions must only display the relevant items/options. Also, it would mean a lot of extra work to write ''redirect()'' 10 times. A for-loop handles the iteration. |
- | In order for the follow-up question to function (e. g. “FQ01”) properly, create that question as follows: The number of items/options in the question must equal the number of possible text inputs (in the example: 10), and texts used for the items/options are placeholders, e. g. %text1% to %text10%. | + | In order for the follow-up question to function (e. g. ''FQ01'') properly, create that question as follows: The number of items/options in the question must equal the number of possible text inputs (in the example: 10), and texts used for the items/options are placeholders, e. g. ''%text1%'' to ''%text10%''. |
- | + | <code> | |
+ | %text1% | ||
+ | %text2% | ||
+ | %text3% | ||
+ | %text4% | ||
+ | %text5% | ||
+ | %text6% | ||
+ | %text7% | ||
+ | %text8% | ||
+ | %text9% | ||
+ | %text10% | ||
+ | </code> | ||
- | **Tip:** Of course, additional text may be added to the placeholders, e. g. “evaluation%text1%”. | + | **Tip:** Of course, additional text may be added to the placeholders, e. g. "evaluation %text1%". |
- | Via value() the following PHP code reads out all of the ten possible text input fields, checks if an entry has been made, creates the placeholders %text1% to %text10% and displays question FQ01 with the matching items/options. | + | Via ''[[:en:create:functions:value]]'' the following PHP code reads out all of the ten possible text input fields, checks if an entry has been made, creates the placeholders ''%text1%'' to ''%text10%'' and displays question FQ01 with the matching items/options. |
- | **Important:** The PHP codes for “Text Input“ and “Free Mention” differ slightly in line 4, because the variables are determined according to different patterns (“TX01_01” vs. “TX02x01”). | + | **Important:** The PHP codes for “Text Input“ and “Free Mention” differ slightly in line 4, because the variables are determined according to different patterns (''TX01_01'' vs. ''TX02x01''). |
- | + | ||
- | + | ||
- | Explanatory note on the PHP code: The IF filter at the end ensures that the follow-up question is skipped if the participant has not completed the relevant field. Through trim() blank spaces at the beginning and end of the text entered are removed so that a number of blanks entered into a text field are not interpreted as a valid answer. Through sprintf() with its parameter %02d it is ensured that numbers are displayed as double-digits with leading zeros (e. g. 01 instead of 1). | + | ^Text Input^Free Mentions^ |
+ | |<code php> | ||
+ | $question = 'TX01'; | ||
+ | $items = array(); | ||
+ | for ($i=1; $i<=10; $i++) { | ||
+ | $itemID = $question.'_'.sprintf('%02d', $i); | ||
+ | $answer = value($itemID); | ||
+ | if (trim($answer) != '') { | ||
+ | replace('%text'.$i.'%', $answer); | ||
+ | $items[] = $i; | ||
+ | } | ||
+ | } | ||
+ | // Folgefrage anzeigen | ||
+ | if (count($items) > 0) { | ||
+ | question('FF01', $items); | ||
+ | } | ||
+ | </code>|<code php> | ||
+ | $question = 'TX02'; | ||
+ | $items = array(); | ||
+ | for ($i=1; $i<=10; $i++) { | ||
+ | $itemID = $question.'x'.sprintf('%02d', $i); | ||
+ | $answer = value($itemID); | ||
+ | if (trim($answer) != '') { | ||
+ | replace('%text'.$i.'%', $answer); | ||
+ | $items[] = $i; | ||
+ | } | ||
+ | } | ||
+ | // Folgefrage anzeigen | ||
+ | if (count($items) > 0) { | ||
+ | question('FF01', $items); | ||
+ | } | ||
+ | </code>| | ||
- | **Note:** If the PHP code does not provide the required results, please refer to chapter Problem Solution for Filters. | + | Explanatory note on the PHP code: The IF filter at the end ensures that the follow-up question is skipped if the participant has not completed the relevant field. Through ''trim()'' blank spaces at the beginning and end of the text entered are removed so that a number of blanks entered into a text field are not interpreted as a valid answer. Through ''sprintf()'' with its parameter '''%02d''' it is ensured that numbers are displayed as double-digits with leading zeros (e. g. ''01'' instead of ''1''). |
+ | **Note:** If the PHP code does not provide the required results, please refer to chapter [[:en:create:filter-solving]]. | ||