0 votes
in SoSci Survey (dt.) by s091357 (185 points)

Liebes Team, meine Betreuerin hat die Frage nach einer Alternative für die replace-Funktion in diesem Forum bereits gestellt und die Möglichkeit von set() genannt bekommen. Hier noch einmal ihre Frage:

*We have SoSciSurvey program Version 2.3.05 installed on an Institute Server and need to use this server to collect data due to institutional regulations concerning data protection.
My student prepared a survey on the public SoSciSurvey server with Version 2.6.00-i that we need to migrate to the Institute Server for data collection.
After importing the entire survey, we realized that there are some functions that cannot be found. Most importantly, the "replace" function is not available:
"Fehler im Fragebogen: Im PHP-Code wurde in Zeile 2 eine Funktion replace() verwendet. Es gibt diese Funktion nicht.

PHP-Code
001 $Mobilitaetsform = value('MV04', 'free');
002 replace('%mobilitaetsform%', $Mobilitaetsform);

We need this function to replace, in a question, a placeholder by the result of a preceding question (the most frequently used means of Transport, e.g. bus, train, car etc.).
What alternative possibilities are there in Version 2.3.05 to attain this functionality?*

Meine Frage ist:
Da ich die neuere Version nutze und nun den Rat befolgen möchte, replace() durch set() zu ersetzen, kann ich überhaupt das gleiche Ergebnis sehen, wie meine Betreuerin, die die ältere Version benutzt?
Bei mir steht als Hinweis, ich solle replace() statt set() nutzen, da set() veraltet wäre.

Außerdem erscheint folgende Fehlermeldung, wenn ich einfach

001 $Mobilitaetsform = value('MV04', 'free');
002 replace('%mobilitaetsform%', $Mobilitaetsform);

gegen:

001 $Mobilitaetsform = value('MV04', 'free');
002 set('%mobilitaetsform%', $Mobilitaetsform);

austausche:

Hängt es ggf. damit zusammen
- dass ich nicht die alte Version verwende (sodass meine Betreuerin diesen Austausch vornehmen muss), oder
- dass der PHP-Code ausschließlich eine Seite nach der Abfrage von MV04 notiert ist? oder
- weil noch eine Funktion fehlt? Ggf. prepare_input() oder anderes?

Vielen Dank vorab!
Viele Grüße

1 Answer

0 votes
by SoSci Survey (304k points)
edited by SoSci Survey

Bei set() müssen Sie die Prozent-Zeichen beim ersten Parameter weglassen:

set($Mobilitaetsform, 'mobilitaetsform');

Die erste Warnung (es ist keine Fehlermeldung, nur ein Hinweise, dass Sie kontrollieren sollten, ob ales passt) kommt daher, dass Sie die aktuelle Version verwenden. Sollte die Betreuerin übrigens auch mal probieren :)

Aber abgesehen von der Warnung funktioniert die alte Funktion noch wie gehabt.

by s091357 (185 points)
Leider bleibt es dabei.

Ich erhalte folgende Meldung auf der Seite nach dem php-Code:
"Die für set() verwendete Kennung ist kein gültiger Platzhalter: S- und U-Bahn."

Auf der Seite, wo dann die Mobilitätsform eingefügt werden soll in den Platzhalter wird folgende Meldung angezeigt:

"Für den Platzhalter %mobilitaetsform% wurde weder ein Eingabefeld mit prepare_input() vorbereitet, noch ein Inhalt mit replace() festgelegt."

Was ist hier noch falsch? Kann mir jemand helfen?

Viele Grüße
by SoSci Survey (304k points)
Pardon, die Parameter-Reihenfolge bei set() ist genau andersherum. Auch das war ein Grund, diese Funktion ad acta zu legen :) Ich habe es oben in der Antwort korrigiert.

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

...