+1 vote
in SoSci Survey (dt.) by s183177 (230 points)

Hallo,

ich habe einen langen PHP-Code geschrieben, der daher in die Datenbank für Inhalte ausgelagert werden musste. Allerdings bekomme ich die Inhalte nun nicht in den Code auf der eigentlichen Seite integriert.

So sieht meine csv-Tabelle aus (die ersten 10 Zeilen):
u1_1a1 $failu1_1a1=((value('R001_01') >= 1) AND (value('R001_02') >= 1) OR [etc.] );
u1_1a2 $failu1_1a2=((value('R001_02') >= 1) AND ((value('R001_01') >= 1) OR [etc.] );
u1_1a3 $failu1_1a3=((value('R001_03') >= 1) AND ((value('R001_01') >= 1) OR [etc.] );
u1_1a4 $failu1_1a4=((value('R001_04') >= 1) AND ((value('R001_01') >= 1) OR [etc.] );
u1_1a5 $failu1_1a5=((value('R001_05') >= 1) AND ((value('R001_01') >= 1) OR [etc.] );
u1_1a6 $failu1_1a6=((value('R001_06') >= 1) AND ((value('R001_01') >= 1) OR [etc.] );
u1_1a7 $failu1_1a7=((value('R001_07') >= 1) AND ((value('R001_01') >= 1) OR [etc.] );
u1_1a8 $failu1_1a8=((value('R001_08') >= 1) AND ((value('R001_01') >= 1) OR [etc.] );
u1_1a9 $failu1_1a9=((value('R001_09') >= 1) AND ((value('R001_01') >= 1) OR [etc.] );
u1_1a10 $failu1_1a10=((value('R001_10') >= 1) AND ((value('R001_01') >= 1) OR [etc.] );

Und der PHP-Code auf der Fragebogen-Seite, der dann durch diese Daten ergänzt werden soll ist folgender:
if ($failu1_1a1 || $failu1_1a2 || $failu1_1a3 || $failu1_1a4 || $failu1_1a5 || $failu1_1a6 || $failu1_1a7 || $failu1_1a8 || $failu1_1a9 || $failu1_1a10 [etc.])

Nun bekomme ich aber die Tabelle nicht in die Seite nicht integriert, dadurch bekomme ich die Fehlermeldung, dass $failu1_1a1 etc. nicht definiert sind. Wie kann ich das ändern?

Vielen Dank im Voraus!

1 Answer

+1 vote
by SoSci Survey (328k points)
selected by s183177
 
Best answer

Sie können Text-Inhalte aus der Datenbank für Inhalte nicht direkt als PHP-Code verwenden.

Hinterlegen Sie stattdessen die Daten (in Ihrem Fall die Kennung der Variablen), und verwenden Sie diese im PHP-Code.

Also Datenbank ...

u1_1a1   R001_01   R001_02   etc.
u1_1a2   R001_02   R001_01   etc.
u1_1a3   R001_03   R001_01   etc.

Und dann im Code

$data = dbLoad('u');
$results = [];
foreach ($data as $key => $vars) {
    $results[$key] = ((value($vars[0]) >= 1) AND ((value($vars[1]) >= 1) OR [etc.] ); 
}
debug($results);

Das funktioniert natürlich nur so einfach, wenn jede Bedingung gleich aufgebaut ist. Sonst wird es ein wenig komplizierter, z.B. müssten Sie dann in einer Spalte erstmal festlegen, welchem Muster die Bedingung folgt.

Eventuell wäre es aber generell zielführender, wenn Sie die Logik hinter der CSV-Tabelle gleich in Schleifen gießen. Der meiste lange PHP-Code lässt sich deutlich effizienter und kompakter schreiben.

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

...