Im Voraus danke für jeden Rat!
Ich möchte Teilnehmenden automatisch Rückmeldung über ihre Ergebnisse geben.
Das hat vor 10 Jahren mit demselben Code und denselben Variablen funktioniert.
Jetzt funktioniert es nicht mehr.
Ich habe schon mehrere Stunden lang den Code umgeschreiben und trouble shooting mit und ohne Hilfe des soscisurvey-Tutorials und ChatGPTs betrieben und das Problem eingegrenzt, aber nicht lösen können. Darum jetzt hier meine Frage:
Der vollständige Code steht unten.
Das Problem scheint darin zu bestehen, dass ich erst neue Variablen mit der valueMean-Funktion aus den Antworten der Teilnehmenden erstelle ("Schritt 1", das scheint soweit zu funktionieren) und ich dann mit diesen neu erstellten Variablen in Schritt 2 weiter arbeite.
Schritt 2 funktioniert nicht, wenn ich die valueMean-Funktion in Schritt 1 verwende, um neue Variablen zu erstellen.
Dagegen funktioniert Schritt 2, wenn ich stattdessen in Schritt 1 den 6 zu erstellenden Variablen willkürliche Zahlenwerte zuordne.
Das Problem scheint also darin zu bestehen, dass die beabsichtigten numerischen Mittelwerte der mit valueMean erstellten Variablen nicht ordentlich übergeben werden.
Die Fehlerwarnungen lauten beispielsweise:
"Fehler im Fragebogen (Seite 10)
Es gibt keine Variable mit der Kennung 2.8, wie sie in der Funktion valueMean() verwendet wurde."
Hier mein PHP-Code:
//SCHRITT 1
//Erstellung der 6 Hauptskalen ($Mittelwert_R, $Mittelwert_I, $Mittelwert_A,
//$Mittelwert_S, $Mittelwert_E, $Mittelwert_C)
//mit der valueMean-Funktion
//In Schritt 1 werden 6 neue Variablen berechnet (im Folgenden genannt: 6 Hauptskalen).
//Diese sollten nun numerische Werte enthalten, welche die Mittelwerte der jeweils
//dazugehörigen Items repräsentieren.
//Wenn ich willkürliche Zahlen als Werte für die 6 Hauptskalen festlege (siehe unten)
//funktioniert der Rest des Codes.
//Was offenbar nicht wie gewünscht funktioniert, ist die Berechnung numerischer Werte mit
//der valueMean-Funktion
//Beim Trouble-Shooting habe ich verschiedene Tests ausprobiert, mit denen ich mir die Mittelwerte
//anzeigen lassen wollte. Diese sind alle fehlgeschlagen.
//Etwas an der Erstellung oder Übergabe der mit valueMeans erstellten Mittelwerte
//als numerische Variablen zur weiteren Verarbeitung scheint nicht zu funktionieren.
//SO FUNKTIONIERT DER CODE AM ENDE **NICHT**:
// Schritt 1: Berechnung der 6 Hauptskalen
$Mittelwert_R = valueMean([
valueMean(['EI07_08','EI08_20','EI09_22','EI10_24','EI12_01']),
valueMean(['EI07_09','EI08_21','EI09_23','EI10_25','EI12_02']),
valueMean(['EI07_15','EI09_02','EI10_04','EI11_06','EI12_08']),
valueMean(['EI08_09','EI09_11','EI10_13','EI11_15','EI12_17'])
]);
$Mittelwert_I = valueMean([
valueMean(['EI10_02','EI07_13','EI08_25','EI11_04','EI12_06']),
valueMean(['EI08_03','EI09_05','EI10_07','EI11_09','EI12_11']),
valueMean(['EI08_05','EI09_07','EI10_09','EI11_11','EI12_13']),
valueMean(['EI08_12','EI09_14','EI10_16','EI11_18','EI12_20'])
]);
$Mittelwert_A = valueMean([
valueMean(['EI07_02','EI08_14','EI09_16','EI10_18','EI11_20']),
valueMean(['EI07_04','EI08_16','EI09_18','EI10_20','EI11_22']),
valueMean(['EI08_04','EI09_06','EI10_08','EI11_10','EI12_12']),
valueMean(['EI08_07','EI10_11','EI11_13','EI12_15','EI09_09'])
]);
$Mittelwert_S = valueMean([
valueMean(['EI07_07','EI08_19','EI09_21','EI10_23','EI11_25']),
valueMean(['EI07_11','EI08_23','EI09_25','EI11_02','EI12_04']),
valueMean(['EI07_14','EI09_01','EI10_03','EI11_05','EI12_07']),
valueMean(['EI08_08','EI09_10','EI10_12','EI11_14','EI12_16'])
]);
$Mittelwert_E = valueMean([
valueMean(['EI07_01','EI08_13', 'EI09_15', 'EI10_17', 'EI11_19']),
valueMean(['EI07_05','EI08_17','EI09_19','EI10_21','EI11_23']),
valueMean(['EI07_10','EI08_22','EI09_24','EI11_01','EI12_03']),
valueMean(['EI08_06','EI09_08','EI10_10','EI11_12','EI12_14'])
]);
$Mittelwert_C = valueMean([
valueMean(['EI08_15','EI09_17','EI10_19','EI11_21','EI07_03']),
valueMean(['EI07_06','EI08_18','EI09_20','EI10_22','EI11_24']),
valueMean(['EI08_10','EI09_12','EI10_14','EI11_16','EI12_18']),
valueMean(['EI08_11','EI09_13','EI10_15','EI11_17','EI12_19'])
]);
//Da jede dieser 6 Hauptskalen aus 4 gleichgewichteten Unterskalen besteht, habe ich die
//valueMean-Funktion mehrmals ineinander geschachtelt.
//Es kommt aber dieselbe Warnung am Ende heraus, wenn ich stattdessen jede Unterskala erst
//einmal separat mit der valueMean-Funktion erstelle und danach aus diesen erstellten
//Unterskalen mit einer neuen valueMean-Funktion die 6 Hauptskalen berechne.
//An der Schachtelung scheint es also nicht zu liegen.
//SO WÜRDE DER DER PHP-CODE AM ENDE FUNKTIONIEREN (heißt, die html-Ausgabe am
//Ende sieht so
//aus, wie sie aussehen soll, aber es werden eben die hier willkürlich festgelegten Zahlen
//anstatt der realen Antworten der Teilnehmenden verwendet, was nicht sein soll):
// Schritt 1: Festlegung willkürlicher numerischer Werte für die 6 Hauptskalen
/Festlegung willkürlicher fester Zahlenwerte für die 6 RIASEC Hauptbereiche statt Erstellung
//derselben mit der valueMean-Funktion
//$Mittelwert_R = 1.5;
//$Mittelwert_I = 3.9;
//$Mittelwert_A = 3.2;
//$Mittelwert_S = 2.8;
//$Mittelwert_E = 4.5;
//$Mittelwert_C = 3.9;
//SCHRITT 2:
//Jeder der oben definierten 6 neuen Variablen wird ein Buchstabencode (R, I, A, S, E, C) //zugeordnet
//Für jede Person werden diese Buchstaben in der Reihenfolge der zu diesen Buchstaben
//gehörenden numerischen angeordnet. Der Buchstabe, der zum größten Mittelwert gehört, wird
//zuerst genannt. Dann folgt der Buchstabe, der zum zweithöchsten Mittelwert gehört, etc.
//Dieser geordnete Code wird dann mit html ausgegeben, einmal als vollständiger sechs-
//stelliger Code, einmal als gekürzter der-stelliger Code.
//Das funktioniert nur dann, wenn ich willkürliche Zahlen für die 6 Buchstaben festlege, aber
//nicht, wenn ich dafür die oben in Schritt 1 erstellten Hauptskalen verwende.
//Erstelung des persönlichen Buchstablencodes
$Code = array(
'R' => $Mittelwert_R,
'I' => $Mittelwert_I,
'A' => $Mittelwert_A,
'S' => $Mittelwert_S,
'E' => $Mittelwert_E,
'C' => $Mittelwert_C,
);
// Ordnung und Ausgabe des persönlichen Buchstablencodes
arsort($Code);
$sortiert = $Code;
$CodeString = '';
foreach ($sortiert as $key => $value) {
$CodeString .= $key;
}
$html = '<h1>Code ' . $CodeString . '</h1>';
html($html);
// Kürzung des persönlichen Buchstablencodes
$Codekurz = substr($CodeString, 0, 3);
$html2 = '<h1>Code ' . $Codekurz . '</h1>';
html($html2);