0 votes
in SoSci Survey (dt.) by s177847 (130 points)

Hallo,

ich möchte für ein Projekt Fragen erstellen, die je nach befragtem Unternehmen bereits individuell ausgefüllt sind und geändert werden können.
Ich weiß grundsätzlich, wie ich dies mit einer hinterlegten Datenbank und Seriennummern erreichen kann.

https://www.soscisurvey.de/help/doku.php/de:create:databank Beispiel 4: Daten a-priori zuspielen

Nun habe ich aber folgendes Problem: Unternehmen A hat 20 hinterlegte Datensätze, Unternehmen B nur 1. Jetzt bekommt Unternehmen B aber demzufolge 19 Blanko Spalten angezeigt, was ich gerne vermeiden möchte. Aber wie kann ich das erreichen?

Vielen Dank im Voraus!

2 Answers

0 votes
by SoSci Survey (306k points)

Jetzt bekommt Unternehmen B aber demzufolge 19 Blanko Spalten angezeigt, was ich gerne vermeiden möchte.

Ohne Kenntnis des Fragetyp muss ich raten, dass es vielleicht um eine Texteingabe-Frage mit 20 Items gehen könnte.

Im Prinzip können Sie dafür den "langen Weg" in der Anleitung Items in eine andere Frage übernehmen. Dieses Vorgehen besteht im Prinzip darin, dass Sie ein Array erstellen, welche Items ausgefüllt sind und dann nur diese Items mittels question() anzeigen.

by s177847 (130 points)
Ich versuche es zu konkretisieren:

Jedes Unternehmen hat unterschiedlich Produkte hergestellt und wir wollen wissen, ob unsere Informationen stimmen.


Zu jedem Produkt gibt es versch. Informationen. Name, Herstellungsjahr, Typ etc.

Bislang habe ich alle diese Informationen in die Datenbank hinterlegt und dann mittels offener Texteingabe ausgefüllte Einzelfragen nach dem folgenden Muster erstellt:

Name: Musterprodukt
Jahr: 2019
Typ: Produkt A

Bei Unternehmen A wissen wir, dass sie 20 Produkte entwickelt haben. Dementsprechend würde ich der Übersichtlichkeit halber 20 solcher Fragen (offene Texteingabe) mit den hinterlegten Daten der Datenbank erstellen. Das Unternehmen kann dann jedes Produkt entsprechend korrigieren.

Wenn aber Unternehmen B nur ein Produkt erstellt hat, würde es doch ebenfalls 20 Fragen erhalten, nur das 19 von denen keine Inhalte enthielten, weil in der Datenbank nichts hinterlegt ist. Und genau das möchte ich gerne vermeiden, weiß aber nicht wie.
by SoSci Survey (306k points)
Nun, im Prinzip so wie ich oben versucht habe, es zu beschreiben. Was Sie aus der Datenbank für Inhalte benötigen ist eine Information, wie viele Produkte es sind. Das kann ein Datenbank-Eintrag mit einer Zahl sein oder mit einer Produktliste in 20 Variablen. Aber es können auch mehrere Datenbankeinträge mit einem gemeinsamen Präfix sein, die Sie mittels dbData() abrufen.

Sobald Sie diese Information haben, können Sie daraus ein Array erstellen. Bei 5 Produkten z.B. ein Array mit den Zahlen 1 bis 5. Wie man das am besten macht, das hängt davon ab, wie die Daten vorliegen. Wie haben Sie die Daten denn im Moment zugespielt?
0 votes
by s177847 (130 points)

Vielen Dank für die Antwort.

Das ist meine exemplarische Datenbank.

Bislang habe ich einfach nach diesem Vorbild, Fragen erstellt:

$key = caseSerial();
$info = dbGet($key);
if ($info !== false) {
preset('ST01_01', $info[0]);
preset('ST01_02', $info1);
preset('ST01_03', $info[2]);
preset('ST01_04', $info[3]);
}
// Jetzt noch die Frage anzeigen
question('ST01');

Für diese exemplarische Datenbank müsste ich drei Fragen erstellen, da es maximal 3 Produkte gibt. Die unterste Firma würde aber dann zwei Blanko Fragen bekommen, da nur ein Produkt hinterlegt ist. Das gilt es zu vermeiden.

by SoSci Survey (306k points)
Leider kann ich auf dem Screenshot kaum etwas erkennen. Insbesondere nicht die Schlüssel auf der linken Seite. Damit es mit der Zuordnung gut funktioniert, würde ich empfehlen, dass Sie den Schlüssel aus einer Unternehmens-ID und einer Produkt-ID zusammenbauen. Also z.B.

ABC001 Unternehmen1 Produkt1
ABC002 Unternehmen1 Produkt2
ABC003 Unternehmen1 Produkt3
DEF001 Unternehmen1 Produkt1
DEF002 Unternehmen1 Produkt2

Dann können Sie über das Präfix des Unternehmens (welches Sie z.B. als benutzerdefinierte Information im Adresseintrag hinterlegen können) alle Produkt-Einträge für das Unternehmen abrufen.

Wenn Sie anderweitig auf die Zahl und die Schlüssel kommen, ist das natürlich auch in Ordnung. Je nachdem, wie viele Einträge Sie am Ende haben, können Sie dann entweder eine Multi-Level-Struktur verwenden (https://www.soscisurvey.de/help/doku.php/de:create:multilevel) oder einfach nur die passenden Seite anzeigen, z.B wenn die Seite Prod1 bis Prod10 heißen:

$anzahlProdukte = ... // woher auch immer Sie diese bekommen
$seiten = [];
for ($i=0; $i<$anzahlProdukte; $i++) {
  $seiten[] = 'Prod'.($i+1);
}
setPageOrder($seiten, 'postProduct');
by SoSci Survey (306k points)
Alternativ können Sie an den Anfang jeder Produktseite einen Filter setzen, welche die Seite überspringt, wenn keine Daten dafür vorliegen.

if (....) {
  goToPage('next');
}

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

...