Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Next revision
Previous revision
Next revisionBoth sides next revision
en:create:transfer-responses [19.03.2016 21:51] – created hotaitdeen:create:transfer-responses [01.04.2016 15:44] – Formatting admin
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.  + 
-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+[[::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 you haven’t worked with filters and PHP code, please refer to chapters Introduction to PHP and Problem Solution for Filters first. +  
-Use Single Answers +**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]]
-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):+**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 ===== 
 + 
 +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: 
 + 
 +<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 [[: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). 
 + 
 +**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:** 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 ===== 
 + 
 +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. 
 + 
 +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%"
 + 
 +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''). 
 + 
 +^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>
 + 
 +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]]. 
  
en/create/transfer-responses.txt · Last modified: 13.02.2024 19:03 by admin
 
Except where otherwise noted, content on this wiki is licensed under the following license: CC Attribution-Share Alike 4.0 International
Driven by DokuWiki