0 votes
in SoSci Survey (dt.) by s255294 (295 points)

Hallo,

das Ergänzen der Datenbank klappt inzwischen super!
Mein neues Problem bezieht sich darauf, dass nicht nur ein persönlicher Kontakt den Fragebogen bearbeiten und die Datenbank ergänzen soll sondern mehrere.
Mein Plan war dies mithilfe der Seriennummer zu bewerkstelligen, die unterschiedlich für jeden Kontakt ist:

    //Daten abrufen
$key = value('ID01_01');
$data = dbGet($key);


//Daten ergänzen
$serial = value('ID02_RV2');
if($serial = 'serial1'){
    $data[6] = value('IV02_01');
    $data[7] = value('IV02_02');
    $data[8] = value('IV02_03');
    $data[9] = value('IV02_04');
    $data[10] = value('IV02_05');
    $data[11] = value('IV02_06');
} elseif ($serial = 'serial2'){
    $data[12] = value('IV02_06');
    $data[13] = value('IV02_07');
    $data[14] = value('IV02_08');
    $data[15] = value('IV02_09');
    $data[16] = value('IV02_10');
    $data[17] = value('IV02_11');
} elseif ($serial = 'serial3'){
    $data[18] = value('IV02_06');
    $data[19] = value('IV02_07');
    $data[20] = value('IV02_08');
    $data[21] = value('IV02_09');
    $data[22] = value('IV02_10');
    $data[23] = value('IV02_11');
} elseif ($serial = 'serial4'){
    $data[24] = value('IV02_06');
    $data[25] = value('IV02_07');
    $data[26] = value('IV02_08');
    $data[27] = value('IV02_09');
    $data[28] = value('IV02_10');
    $data[29] = value('IV02_11');
} elseif ($serial = 'serial5'){
    $data[30] = value('IV02_06');
    $data[31] = value('IV02_07');
    $data[32] = value('IV02_08');
    $data[33] = value('IV02_09');
    $data[34] = value('IV02_10');
    $data[35] = value('IV02_11');
}

//Daten erneut speichern
$data = dbSet($key, $data);

Dies funktioniert allerdings nicht wie geplant. Stattdessen werden die Daten in der Datenbank immer in Spalten 6-11 abgespeichert. Könnten Sie mir helfen zu erkennen wo mein Fehler liegt und mir verraten, ob es überhaupt möglich ist, Daten in späteren Spalten (z.B. 24-29) abzuspeichern, auch wenn die Spalten davor noch nicht gefüllt sind?
Danke!

1 Answer

0 votes
by SoSci Survey (304k points)
selected by s255294
 
Best answer

Ich befürchte, Sie müssen etwas weiter ausholen. Sie ergänzen in den Links manuell eine Variable =serial1, =serial2 u.s.w., und lesen diese mittels ID02_RV2 ein?

Ein anderer Lösungsansatz wäre, dass Sie in dem Datenbank-Eintrag auch einen Wert anlegen, wie viele Sets schon gespeichert wurden, z.B.

// Nur einmal
if (getRoute() !== 'next') {
    goToPage('next');
}

//Daten abrufen
$key = value('ID01_01');
$data = dbGet($key);

if (array_key_exists(6, $data)) {
    $setNum = $data[6];
} else {
    $setNum = 0;
}

$data[6] = $setNum+1;

$offset = 6 + 6 * $setNum;

$data[$setNum + 1] = value('IV02_01');
$data[$setNum + 2] = value('IV02_02');
$data[$setNum + 3] = value('IV02_03');
$data[$setNum + 4] = value('IV02_04');
$data[$setNum + 5] = value('IV02_05');
$data[$setNum + 6] = value('IV02_06');

// Daten erneut speichern
$data = dbSet($key, $data);
by s255294 (295 points)
Vielen Dank für diesen Lösungsansatz, der mir tatsächlich noch viel praktischer erscheint!

Ich habe versucht den Code genauso zu übernehmen, was leider nicht ganz funktioniert hat.
Mit einer etwas veränderten Version des Codes hat es allerdings geklappt (ich hoffe, dass ich dabei keinen relevanten Befehl verändert habe).

// Nur einmal
if (getRoute() !== 'next') {
    goToPage('next');
}

//Daten abrufen
$key = value('ID01_01');
$data = dbGet($key);


if (array_key_exists(24, $data)) {
    $setNum = 30;
} elseif (array_key_exists(18, $data)) {
    $setNum = 24;
} elseif (array_key_exists(12, $data)) {
    $setNum = 18;
} elseif (array_key_exists(6, $data)) {
    $setNum = 12;
} else {
    $setNum = 6;
}

$data[$setNum + 0] = value('IV02_01');
$data[$setNum + 1] = value('IV02_02');
$data[$setNum + 2] = value('IV02_03');
$data[$setNum + 3] = value('IV02_04');
$data[$setNum + 4] = value('IV02_05');
$data[$setNum + 5] = value('IV02_06');

// Daten erneut speichern
$data = dbSet($key, $data);

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

...