0 votes
in SoSci Survey (dt.) by s135290 (110 points)

Liebes SoSci Survey Support Team,

für die Generierung eines individualisierten Teilnahmecodes müssen die Teilnehmer in meiner Studie ihre Email-Adresse angeben. Ich habe den Befehl dropValue() eingebaut und trotzdem werden die Email-Adressen im Anschluss im Datensatz gespeichert. Könntet ihr mir erklären, wie man das beheben kann?

Vielen Dank im Voraus!

by SoSci Survey (328k points)
Auf welcher Seite haben Sie (a) die Frage nach der E-Mail-Adresse, (b) die Generierung von Codes und (c) den dropValue()-Befehl? Und wie sieht Ihr PHP-Code aus, welcher das dropValue() enthält?
by s135290 (110 points)
Auf der Seite 6 des Fragebogens ist die Frage nach der E-Mail-Adresse und auf 6 und 7 erfolgt die Generierung des Codes und auf Seite 7 steht der folgende PHP-Code mit dropValue-Befehl:

question('YZ01_01');
//question('YZ02_01');

$email = value('YZ01_01');
$subject_id = value('YZ01_02');
registerVariable($subject_id);

replace('%subject_id%', 'YZ01_02', 'response');
dropValue('YZ01_01');
by SoSci Survey (328k points)
Wie verteilt sich dieser Code bitte genau auf die beiden Seiten? Haben Sie noch weiteren Code, sodass das dropValue() evtl. nicht ausgeführt wird?

Das einzige, was mir auffällt ist, dass es question('YZ01'); ohne _01 heißen müsste. Aber wenn das dropValue() dann erst auf der nächsten Seite folgt, müsste der Inhalt korrekt gelöscht werden.
by s135290 (110 points)
Auf Seite 7 erscheint der folgende Code:

question('YZ01','1,2'); // email, subject_id

html('
    <div class="uk-alert-primary" uk-alert>
            <div class="uk-grid-small uk-flex-middle" uk-grid>
                <div class="uk-width-auto">
                    <span uk-icon="icon: lock; ratio: 2"></span>
                </div>
                <div class="uk-width-expand">
                    <p class="uk-text-large uk-margin-remove-bottom">Optimaler Datenschutz dank Teilnahmecode</p>
                    <p class="uk-margin-remove-top ">Aus deiner E-Mail-Adresse generieren wir einen für dich individualisierten Teilnahmecode. Nach Eingabe wird dir dein persönlicher Code angezeigt, woraufhin deine E-Mail-Adresse aus dem System sofort gelöscht wird. Hierdurch vermeiden wir es, deine personenbezogenen
                        Daten zu speichern.</p>
                </div>
            </div>
        </div>
        
        <div class="uk-form-stacked uk-margin">
            <div class="uk-margin">
                <div class="uk-inline uk-width-1-1">
                    <span class="uk-form-icon" uk-icon="icon: mail"></span>
                    <input id="email" class="uk-input" type="text" placeholder="Ihre E-Mail-Adresse" />
                </div>
            </div>
            <div class="uk-margin">
                <label class="uk-form-label uk-text-bold">Generierter Teilnahmecode</label>
                <div class="uk-inline uk-width-1-1">
                    <span class="uk-form-icon" uk-icon="icon: hashtag"></span>
                    <input id="subject_id" class="uk-input" type="text" disabled="disabled" />
                </div>
            </div>
        </div>    
');

html('
    <script>
        let sss_hidden_email = "#YZ01_01";
        let sss_hidden_subject_id = "#YZ01_02";
        let email_input = "#email";
 let subject_id_input = "#subject_id";
    
        $(document).ready(function() {
            $("#submit0").hide();
        });
    
        $(email_input).on("input", function() {
    
            let regex = /^([a-zA-Z0-9_.+-])+\@(([a-zA-Z0-9-])+\.)+([a-zA-Z0-9])+$/;
            let email_str = $(email_input).val().toLowerCase();
            if (regex.test(email_str)) {
    
                email_str_cut = email_str.substring(0, email_str.length - 5);
    
                $(subject_id_input).val($.MD5(email_str_cut));
                $(sss_hidden_email).val(email_str);
                $(sss_hidden_subject_id).val($(subject_id_input).val());
                UIkit.notification.closeAll();
                UIkit.notification({
                    message: "<div class=\"uk-text-small\"><span uk-icon=\"icon: check\"></span> Sie können zur nächsten Seite fortfahren!</div>",
                    status: "success",
                    pos: "bottom-center",
                    timeout: 5000
                });
                $(email_input).addClass("uk-form-success");
                $(email_input).removeClass("uk-form-danger");
                $("#submit0").show();
            } else {
                $(sss_hidden_email).val("");
                $(sss_hidden_subject_id).val("");
                UIkit.notification.closeAll();
                UIkit.notification({
                    message: "<div class=\"uk-text-small\"><span uk-icon=\"icon: ban\"></span> Ungültige E-Mail-Adresse! </div>",
                    status: "danger",
                    pos: "bottom-center",
                    timeout: 5000
                });
                $(email_input).addClass("uk-form-danger");
                $(email_input).removeClass("uk-form-success");
                $("#submit0").hide();
            }
    
        });
    </script>    
');
by s135290 (110 points)
Und auf der folgenden Seite steht dieser Quelltext:

question('YZ01_01');
//question('YZ02_01');

$email = value('YZ01_01');
$subject_id = value('YZ01_02');
registerVariable($subject_id);

replace('%subject_id%', 'YZ01_02', 'response');
dropValue('YZ01_01');

html('
    <div class="uk-alert-success" uk-alert>
        <div class="uk-grid-small uk-flex-middle" uk-grid>
            <div class="uk-width-auto">
                <span uk-icon="icon: hashtag; ratio: 2"></span>
            </div>
            <div class="uk-width-expand">
                <p class="uk-text-large uk-margin-remove-bottom">Teilnahmecode erfolgreich generiert!</p>
                <p class="uk-margin-remove-top ">Bitte notiere dir deinen individuellen Teilnahmecode und bewahre ihn gut auf, wenn du an der Universität Leipzig mit Versuchspersonen-Stunden vergütet werden möchtest und wenn du am Gewinnspiel teilnehmen willst.</p>
            </div>
        </div>
    </div>

    <div class="uk-form-stacked uk-margin">
        <div class="uk-margin">
            <label class="uk-form-label uk-text-bold">Ihr Teilnahmecode</label>
            <div class="uk-inline uk-width-1-1">
                <span class="uk-form-icon" uk-icon="icon: hashtag"></span>
                <a class="uk-form-icon uk-form-icon-flip" href="#" uk-icon="icon: copy" uk-tooltip="Teilnahmecode kopieren" onclick="copyToClipboard()"></a>
                <input id="subject_id" class="uk-input" type="text" value="%subject_id%" />
            </div>
        </div>
    </div>
');

html('
    <script>
    var sss_hidden_email = "#ZY02_01";
    var sss_hidden_subject_id = "#ZY02_02";
    var sss_email_subject_id = "#YZ02_qst";
  $(document).ready(function() {
        $(sss_email_subject_id).hide();
        var email = $(sss_hidden_email).val();
        $(sss_email_subject_id).find("*").filter(":input").val(email);
        $("#subject_id").val("%subject_id%");
    });

    function copyToClipboard() {
        var copyText = document.getElementById("subject_id");
        copyText.select();
        document.execCommand("copy");
      }
      
    </script>
');

1 Answer

0 votes
by SoSci Survey (328k points)

Und auf der folgenden Seite steht dieser Quelltext:

question('YZ01_01');

<snip>

replace('%subject_id%', 'YZ01_02', 'response');
dropValue('YZ01_01');

Ich denke das Problem ist folgendes: Auf Seite 7 wird (trotz Angabe der Item-Kennung "YZ01_01" statt der Frage-Kennung "YZ01") die offene Texteingabe YZ01 nochmal eingebunden. Das Eingabefeld ist mit der Antwort von der vorherigen Seite vorbelegt. Was dann passiert:

  1. Erneute Anzeige der Frage mit E-Mail-Adresse
  2. Löschung der E-Mail-Adresse aus dem Datensatz mittels dropValue()
  3. Klick auf "Weiter", dabei erneute Übermittlung der E-Mail-Adresse aus der Frage
  4. Speicherung der E-Mail-Adresse im Datensatz

Kurzum: Wenn Sie die Frage auf der Folge-Seite nicht (!) erneut anzeigen/einbinden, dann sollte die E-Mail-Adresse auch korrekt aus dem Datensatz gelöscht werden.

by s135290 (110 points)
Ok, das ergibt Sinn. Vielen Dank für die 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

...