// PHP code on page 2
$selected = getItems('TF04', 'min', 2); // determine media used
if (count($selected) == 0) {
goToPage('end'); // go to the end, if none of the media are used
}
The rest of the manual describes how the same problem can be resolved using a FOR loop. This procedure becomes interesting if the ''getItems()'' function is insufficient.
===== Loops =====
Basically, all the items (No. 1 to 6) have to be checked in the same way. Loops are there to carry out these monotonous tasks. A FOR loop does nothing other than enumerate a number.
The following example demonstrating loops writes a line of text 6 times with slightly modified content in the questionnaire.
The loop saves the number, which increases by 1 in each pass, in the variable ''$i'' ([[variables#php-variablen|PHP Variables]]). In this example, the FOR counter begins with 1 (''$i=1''). Then, as long as the number ''$i'' is smaller or equal to 6 (''%%$i<=6%%'') for that amount of time, the number in ''$i'' increases by one (''$i++''). All the numbers from 1 to 6 are passed through: whatever is behind the ''for'' in curly brackets is executed six times -- each one with a different ''$i''.
for ($i=1; $i<=6; $i++) {
html((string)$i);
}
The above loop writes the number simply in the questionnaire -- the result is trivial:
123456
What makes the whole thing more interesting is if an item ID is generated from the number. In the following example, the question ID is saved beforehand in the variable ''$question''. In the following loop, the text 'round', the number ''$i'' and additional text fragments are combined with the period (''.'') and saved in the variable ''$text''. For example, the variable ''$text'' then contains "round 1 with item TF04_01" in the first iteration.
$question = 'TF04'; // saves text 'TF04' in variable $question
for ($i=1; $i<=6; $i++) {
$text = 'Round '.$i.' with item '.$question.'_0'.$i; // combined
html(''.$text.'
'); // write
}
The PHP code generates the following output in the questionnaire, which already contain item IDs:
Round 1 with item TF04_01
Round 2 with item TF04_02
Round 3 with item TF04_03
Round 4 with item TF04_04
Round 5 with item TF04_05
Round 6 with item TF04_06
===== Loops und Filters =====
Of course, not only the item IDs should be written. The following example checks which types of media are used at least once a month (at least an answer code of 2). In order to do this, the question TF04 has to have been asked on one of the previous pages. The ID of the item is created by linking the question ID and the number, saved in the variable ''$item'' and subsequently used in ''value()''.
The variable ''$counter'' is set to 0 beforehand. The counter will increase by one with every medium used at least once a month (''$counter++'' is synonymous with ''$counter = $counter + 1'').
$question = 'TF04'; // if the ID is needed more frequently
$number_items = 6; // 6 items are checked
$counter = 0; // sets the counter to 0
for ($i=1; $i<=$number_items; $i++) {
$item = $question.'_'.$i; // gives e.g. TF04_1
if (value($item) >= 2) { // checks item TF01_1 to TF04_6
html('Medium no. '.$i.' used regularly
');
$counter++; // increases counter by one
}
}
// display information
html('Used regularly '.$counter.' media
');
// Filter
if ($counter == 0) {
goToPage('end'); // go to the end if none of the media are used
}
**Tip:** If the item ID is only stated as a single-digit ((''TF04_1'' instead of ''TF04_01''), the ''value()'' command is not affected. This is particularly useful if the user wants to check more than 9 items.
In this example, it is particularly interesting what can be done with the counter (''$counter'') -- i.e. the last three lines. If an respondent uses none of the specified media at least once a month, in the above example he will be sent directly to the end of the questionnaire. Of course, a question block could also be skipped in this way or other filters implemented depending on ''$counter''.
**Tip:** If you need the complex determined variable ''$counter'' later on in the questionnaire for another filter, use the function ''[[:en:create:functions:registervariable|registerVariable()]]''.
It is often the case that only items for the media also used should be used in another question. This process is explained in the chapter [[filter-items|Use Selected Items in Another Question]].