0 votes
in SoSci Survey (dt.) by s075713 (120 points)

Hallo! Ich habe einen Schieberegler für die Skala 1-100. Ich möchte allerdings, dass man nur in 5er Schritten anklicken kann, also 1-5-10-15-..bis 100. Wie ist das möglich?
Danke!

1 Answer

0 votes
by SoSci Survey (302k points)

Die 1 am Anfang sollten Sie sich nochmal überlegen - sachlogisch müsste es eine 0 sein.

Bitte stellen Sie als DIfferenzierung einfach auf 20 und sorgen Sie mit einer passenden Formatierungsfunktion (s. Anleitung zum Schieberegler dafür), dass das 5-fache des internen Codes (minus 1) angezeigt wird.

Aus 1 wird dann (1-1) x 5 = 0, aus 2 wird (2-1) x 5 = 5 u.s.w.

Wenn Ihnen die 1 am Anfang wichtig ist, können Sie noch einen kleinen Filter einbauen, der das abfängt.

by s075713 (120 points)
Danke für die Antwort! Das funktioniert für die Anzeige des Schiebereglers super, der läuft nun von 0 bis 100 in 5er Schritten. Allerdings werden die Antworten gespeichtert so wie die Differenzierung angegeben ist von 1-21. Kann man die Antworten auch wie angezeigt von 0 bis 100 speichern?
Das wäre wichtig, da die Auswertung schon automatisiert ist und es schwierig ist davor nochmal einen Schritt einzufügen, der die Daten von 1-21 wieder auf 0-100 transformiert.
Danke!
by SoSci Survey (302k points)
Sie können die Daten einfach in eine neue Variable umkodieren (auf der Folgeseite):

$slider = value('SR01_01');
if ($slider > 0) {
  put(IV01_01, ($slider - 1) * 5);
} else {
  put(IV01_01, '');
}

Wenn Sie die Schieberegler-Frage kopieren und die ursprüngliche Frage dann in eine interne Variable umwandeln, müssen Sie in der nachgelagerten Auswertung nicht einmal die Kennung ändern.
by s075713 (120 points)
Vielen Dank,

ich habe im Fragenkatalog die Frage dupliziert und die ursprüngliche auf "interne Variable" statt "Schieberegler" gesetzt. Dann habe ich beide Fragen bei "Fragebogen zusammenstellen" je auf einer Seite hintereinander dazugefügt.  Danach habe ich noch eine Seite eingefügt nur mit dem PHP Code von Ihnen:
$slider = value('SR01_01');
if ($slider > 0) {
  put('IV01_01', ($slider - 1) * 5);
} else {
  put('IV01_01', '');
}

(Ich habe IV01_01 in Anführungsstrichen gesetzt, sonst bekam ich immer folgende Fehlermeldung: "Warnung: Die Funktion IV01_01() ist nicht bekannt.")

Ich habe statt SR01_01 die Kennung von der Variablenübersicht  der zweiten Frage ('Schieberegler', N302_01) eingefügt und statt IV01_01 die Kennung von der Variablenübersicht der ersten Frage ('interne Variable', N301_01).

Allerdings wird diese Frage dann nicht angezeigt und auf der nächsten Seite bekomm ich folgende Fehlermedlung:
"Eine oder mehrere Variablen (N301_34, N301_78, N301_75, N301_04, N301_24, N301_53, N301_26, N301_11, N301_12, N301_41, N301_14, N301_99, N301_88, N301_67, N301_38, N301_13, N301_62, N301_05, N301_85, N301_18, N301_30, N301_66, N301_39, N301_89, N301_29, N301_61, N301_03, N301_09, N301_08, N301_25, N301_87, N301_22, N301_10, N301_82, N301_84, N301_19, N301_97, N301_57, N301_80, N301_02, N301_45, N301_48, N301_52, N301_83, N301_27, N301_07, N301_43, N301_64, N301_44, N301_65, N301_31, N301_54, N301_90, N301_51, N301_16, N301_56, N301_06, N301_17, N301_37, N301_69, N301_33, N301_63, N301_15, N301_50, N301_46, N301_81, N301_71, N301_76, N301_35, N301_01, N301_23, N301_60, N301_74, N301_96, N301_92, N301_93, N301_20, N301_77, N301_28, N301_73, N301_21, N301_55, N301_59, N301_58, N301_72, N301_94, N301_91, N301_47, N301_68, N301_36, N301_98, N301_70, N301_49, N301_86, N301_42, N301_95, N301_79, N301_32, N301_40) wurden bereits auf Seite 4 abgefragt. Bitte beachten Sie, dass die Antworten von Seite 4 hier angezeigt und anschließend überschrieben werden. Falls Sie eine gleichartige Frage mehrfach benötigen, erstellen Sie eine Kopie der Frage."

In dieser Frage befinden sich 99 Items, die mit jeweils einem Schieberegler zu beantworten sind (N301_01 bis N301_99). Muss ich dann für alle Items diesen Code schreiben, also 99 x mit jeweils anderen Variablen?

Vielen Dank!
by SoSci Survey (302k points)
Entfernen Sie die ursprüngliche Frage (jetzt "interne Variablen") bitte von der Seite und fügen Sie stattdessen die neue ein. Wenn die Meldung dann immer noch erscheint, posten Sie bitte die komplette Debug-Information.

Wenn ich es richtig verstehe, haben Sie nicht nur einen Schieberegler, sondern gleich 40? Dann müssten Sie Ihre Funktion noch ein wenig erweitern:

foreach ($item in getItems('N302', 'all')) {
  $slider = value(id('N302', $item));
  if ($slider > 0) {
    put(id('N301', $item), ($slider - 1) * 5);
  } else {
    put(id('N301', $item), '');
  }
}
by s075713 (120 points)
Vielen Dank!

Ja genau, ich habe sogar 99 Schieberegler.
Allerdings bekomm ich folgende Fehlermeldung für den Code:

Warnung: Unerwartetes Element: in - fehlt hier vielleicht ein Semikolon (;) oder Anführungszeichen?

foreach ($item in

Warnung: Unerwartetes Element: getItems - fehlt hier vielleicht ein Semikolon (;) oder Anführungszeichen?

foreach ($item in getItems



Noch eine Frage hätt ich dazu: Wenn ich die Daten dann ansehe, sind alle Variablen im Datensatz, also 99 für N302 und 99 für N301. Ich hätte dann die Daten aber gerne nur mit den schon konvertierten Variablen. Wie kann ich das noch lösen?

Vielen Dank!
by SoSci Survey (302k points)
Hopple, in der Programmiersprache verrutscht...

foreach (getItems('N302', 'all') as $item) {

Wenn der Fehler mit dem foreach dan immer noch auftaucht, verraten Sie mir bitte, was Sie im PHP-Code davor/darüber noch stehen haben. Danke.

>  Ich hätte dann die Daten aber gerne nur mit den schon konvertierten Variablen. Wie kann ich das noch lösen?

Die einfachste Lösung besteht darin, dass Sie die überflüssigen Variablen ignorieren oder nach dem Download löschen.

Direkt "deaktivieren" kann man sie nur bei Nutzung der Download-API mittels vList oder vSkip. https://www.soscisurvey.de/help/doku.php/de:results:data-api - wenn schon automatisierte Verarbeitung dann richtig :)
by s075713 (120 points)
Vielen Dank es funktioniert nun :)

Meine letzte Frage noch ;): Bezüglich der überflüssigen Variablen: wäre es auch eine Möglichkeit, die internen Variablen einfach doch zu löschen (also die originale Variable, die ich zu intern umgewandelt hab und nicht mehr auf den Seiten des Fragebogens ist, e.g. N301) und die neuen Schieberegler-Variablen (e.g. N302) so zu lassen und dann die Umkodierung direkt auf diese Variaben zu machen, also so:

foreach ($item in getItems('N302', 'all')) {
  $slider = value(id('N302', $item));
  if ($slider > 0) {
    put(id('N302', $item), ($slider - 1) * 5);
  } else {
    put(id('N302', $item), '');
  }
}

Dann hätt ich Datensatz nur einmal die Variablen mit den umkodierten Werten. Die varibale würde dann halt N302 statt früher N301 heissen, aber das wäre einfach zu ändern für mich.

Danke!
by SoSci Survey (302k points)
Legen Sie doch für neue Fragen eine neue Frage im Support an - dann ist's übersichtlicher ;)

Aber zu ihrer Frage: Nein, das ist nicht möglich. put() funktioniert absichtlich nur mit internen Variablen, sonst ist das Risiko viel zu hoch, die eigenen Daten zu "zerschießen". Nehmen wir einmal an, der Teilnehmer bekommt die Seite nochmal vorgelegt, weil er einen Schieberegler vergessen hat. Dann wäre intern schon der veränderte Wert gespeichert und alle Schieberegler würden einen falschen Wert anzeigen. Oder die Umrechnungsseite würde zweimal geladen, dann hätten Sie doppelt transformiert. Das möchten Sie alles nicht...
by s075713 (120 points)
Okay, alles klar!
Vielen Dank für Ihre Hilfe!

Willkommen im Online-Support von SoSci Survey.

Hier bekommen Sie schnelle und fundierte Antworten von anderen Projektleitern und direkt von SoSci Survey.

→ Eine Frage stellen


Welcome to the SoSci Survey online support.

Simply ask a question to quickly get answers from other professionals, and directly from SoSci Survey.

→ Ask a Question

...