0 votes
in SoSci Survey (dt.) by s154695 (485 points)

Guten Tag!

Die Teilnehmenden meiner Studie sollen unter Verwendung von Highcharts ein grafisches Feedback zu einem zuvor von ihnen angebenen Wert (erfasst in einer Variable mit dem Namen CS01_01) erhalten.
CS01_01 ist eine offene Texteingabe, bei der nur Dezimalzahlen zwischen 1 und 6 erlaubt sind.

Das Feedback soll im Vergleich zu einem Wert in dem Diagramm angezeigt werden, dass entweder 0.5 Punkte höher ist als der angegebene Wert oder damit identisch ist.
In welcher Feedbackbedingung die Teilnehmenden sind, wird durch den Zufallsgenerator RA0 (1 = anderer Wert 0.5 Punkte höher; 2 = anderer Wert gleich) auf einer vorherigen Fragebogenseite ausgelost.

Aktuell bin ich bei folgendem Code für die Berechnung des Wertes:

$wert1 = value('CS01_01');
$diffeval = 0.5;

if (value('RA0') == 1) {
  $wert2 = $wert1 + $diffeval;
} else {  
  $wert2 = $wert1;
}

replace('%wert1%', (int)$wert1);
replace('%wert2%', (int)$wert2);

Die Debug-Informationen verraten mir, dass der Wert von CS01_01 richtig erfasst wird.

Für %wert1% wird allerdings unabhängig von der Eingabe in CS01_01 der Wert "1" und für %wert2% der Wert "1"/"2" (je nach Bedingung) angezeigt.

Ich bin mir nun unsicher, ob das etwa an dem Fragetypen für CS01_01, am Code oder etwas ganz anderem liegt. Können Sie mir hier weiterhelfen?
Vielen Dank schon im Voraus!

Falls das relevant ist, hier noch der Code, den ich für die grafische Darstellung (Highcharts) verwende:

<script src="https://code.highcharts.com/highcharts.js"></script>
<script src="https://code.highcharts.com/modules/exporting.js"></script>
<script src="https://code.highcharts.com/modules/export-data.js"></script>
<script src="https://code.highcharts.com/modules/accessibility.js"></script>
 
<figure class="highcharts-figure">
  <div id="container"></div>
  <p class="highcharts-description">
   
  </p>
</figure>


<style type="text/css">
.highcharts-figure, .highcharts-data-table table {
  min-width: 310px; 
  max-width: 800px;
  margin: 1em auto;
}

#container {
  height: 400px;
}

.highcharts-data-table table {
	font-family: Verdana, sans-serif;
	border-collapse: collapse;
	border: 1px solid #EBEBEB;
	margin: 10px auto;
	text-align: center;
	width: 100%;
	max-width: 500px;
}
.highcharts-data-table caption {
  padding: 1em 0;
  font-size: 1.2em;
  color: #555;
}
.highcharts-data-table th {
	font-weight: 600;
  padding: 0.5em;
}
.highcharts-data-table td, .highcharts-data-table th, .highcharts-data-table caption {
  padding: 0.5em;
}
.highcharts-data-table thead tr, .highcharts-data-table tr:nth-child(even) {
  background: #f8f8f8;
}
.highcharts-data-table tr:hover {
  background: #f1f7ff;
}
</style>

<script type="text/javascript">
Highcharts.chart('container', {
  chart: {
    type: 'column'
  },
  title: {
    text: 'Lehrevaluationsfeedback mit <b>LV154/<b>'
  },
  subtitle: {
    text: 'Vergleich zwischen <b>Ihrer Lehrveranstaltung (LV475)</b> und <b>LV154</b>'
  },
  xAxis: {
    categories: [
      ''
    ],
    crosshair: false
  },
  yAxis: {
    min: 0,
    title: {
      text: 'Gesamtevaluation'
    }
  },
  credits: {
    enabled: false
  },
  tooltip: {
    headerFormat: '<span style="font-size:10px">{point.key}</span><table>',
    pointFormat: '<tr><td style="color:{series.color};padding:0">{series.name}: </td>' +
      '<td style="padding:0"><b>{point.y:.1f} </b></td></tr>',
    footerFormat: '</table>',
    shared: true,
    useHTML: true
  },
  plotOptions: {
    column: {
      pointPadding: 0.2,
      borderWidth: 0
    },
        series: {
            dataLabels: {
                enabled: true
            }
        }
  },
  series: [{
    name: 'LV475 (Ihr Wert)',
    data: [%wert1%]

  }, {
    name: 'LV154 (Vergleichswert)',
    data: [%wert2%]

  }]
});
</script>

1 Answer

0 votes
by SoSci Survey (327k points)
selected by s154695
 
Best answer

Für %wert1% wird allerdings unabhängig von der Eingabe in CS01_01 der Wert "1" und für %wert2% der Wert "1"/"2" (je nach Bedingung) angezeigt.

Durch das (int) runden Sie den Wert immer auf die nächste Ganzzahl ab.

Versuchen Sie es mal ohne (int) oder mit sprintf().

replace('%wert1%', $wert1);
// oder
replace('%wert1%', sprintf('%1.1f', $wert1));

Das %1.1f heißt, dass eine Fließkommazahl mit einer führenden Stelle und einer Nachkommastelle ausgegeben werden soll.

Mittels debug() können Sie übrigens im Debug-Modus auch immer nachsehen, welchen Wert eine PHP-Variable hat.

debug($wert1);
by s154695 (485 points)
Perfekt, vielen Dank für die Hilfe und auch den Hinweis für die Zukunft hinsichtlich der debug()-Funktion! Ich habe die zweite Option gewählt und das funktioniert wunderbar.

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

...