1 = Anna Alpha
2 = Bernhard Beta
3 = Christine Gamma
4 = Daniel Delta
Die vierte Variable ist optional, sie speichert hier im Beispiel den Inhalt des Social Media Posts. Dies kann die Auswertung geringfügig vereinfachen, vor allem die Prüfung der korrekten Codierung.
==== Zu codierende Inhalte ====
Die Social Media Posts sind in diesem Anwendungsfall reine Textinhalte (Bilder oder andere Mediendateien wären anhand von Dateinamen ebenfalls möglich). Im Zuge des Scraping wurde den Posts eine eindeutige ID zugewiesen, die auch im Datensatz erscheinen soll. Für die Ablage der Inhalte wird dieser ID noch ein ''P'' vorangestellt. Der Post mit der ID 1 bekommt also den Datenbankschlüssel ''P1''. Dieses Präfix ist für die Abgrenzung zu anderen Kategorien von Einträgen (siehe unten) in der Datenbank für Inhalte notwendig.
**Tipp:** Die Liste wird per Excel vorbereitet, das Präfix kann hier z.B. durch die Funktion ''VERKETTEN()'' ergänzt werden.
Die Excel-Tabelle für die Post-Inhalte würde wie folgt aussehen.
{{:de:create:scr.content-analysis.posts.png?nolink|Excel-Datei mit zu codierenden Inhalten}}
Die erste Spalte enthält hier (nur noch) die Datenbankschlüssel für die [[:de:create:databank]]. Die zweite Spalte enthält die Texte der Posts, die später den Codierer:innen angezeigt werden sollen. In weiteren Spalten könnten weitere Informationen (z.B. der Dateiname eines Bildes) ergänzt werden.
Die XLSX-Datei wird in SoSci Survey unter **Spezialfunktionen** -> **Datenbank für Inhalte** mit //Datei einlesen// eingelesen.
{{:de:create:scr.content-analysis.database-import.png?1000|Excel-Datei importieren}}
Die erste Spalte wird als Datenbankschlüssel ausgewählt.
{{:de:create:scr.content-analysis.posts-db.png?nolink|Auszug aus der Datenbank für Inhalte}}
**Tipp:** In diesem Beispiel haben die Posts numerische, fortlaufende IDs. Es können aber problemlos auch alphanumerische, nicht sequenzielle IDs verwendet werden.
==== Zuordnung von Posts zu Codierer:innen ====
Im Anwendungsbeispiel sollen die Posts so auf die Codierer:innen verteilt werden, dass jeder Post von zwei Personen codiert wird. Dafür wurde erneut eine Excel-Tabelle erstellt. Die Tabelle enthält untereinander zwei große Blöcke, in denen jede Post ID je einmal vorkommt (weil jeder Post ja zweimal codiert werden soll).
In der zweiten Spalte wurden dann die IDs der Codierer:innen ergänzt. Im ersten Block wurden die IDs in regulärer Abfolge eingetragen und der Block dann auf alle weiteren Zeilen kopiert.
{{:de:create:scr.content-analysis.assignment-1.png?nolink|Excel-Tabelle mit Zuordnung Codierer:innen zu Posts}}
Im zweiten Block wurden die IDs in andere Reihenfolgen (2,3,4,1,3,4,1,2) eingetragen und kopiert, sodass sich über die gesamte Tabelle verteilt jeweils unterschiedliche Kombinationen aus jeweils zwei Codierer:innen um einen Post kümmern.
Die gesamte Tabelle wurde anschließend zufällig gemischt (dafür ist eine zusätzliche Spalte mit dem Inhalt ''=ZUFALLSZAHL()'' hilfreich), dann nach der Spalte mit den //Coder ID// sortiert, und dann wurden in eine dritte Spalte //Step// fortlaufende Nummer für die Posts jeder Coderer:in eingetragen.
{{:de:create:scr.content-analysis.assignment-2.png?nolink|Zuordnung von Posts und Codierer:innen}}
In einer vierten Spalte "Key" wird außerdem ein Datenbank-Schlüssel erstellt. Dieser setzt sich zusammen aus dem Präfix "C", der ID der Codierer:in, einem Trennzeichen (hier ein Trennstrich) und der fortlaufenden Nummer aus der dritten Spalte.
Diese XLSX-Datei wird ebenfalls in die Datenbank für Inhalte importiert, die Spalte "Key" dient erneut als Datenbankschlüssel.
{{:de:create:scr.content-analysis.assignment-db.png?nolink|Zuordnung in der Datenbank für Inhalte}}
==== Fehlermeldungen ====
Damit sind in SoSci Survey alle Informationen hinterlegt, um die Posts nacheinander zur Codierung anzuzeigen. Zusätzlich werden im **Fragenkatalog** noch 3 Texte erstellt, die später im Fragebogen als Fehlermeldungen dienen. Als //Darstellung// wird in allen Texten die Option "Warnung" ausgewählt.
* CX02 -- Inhalt: "Ungültiger Aufruf" (wird angezeigt, wenn keine Codierernummer im Link übergeben wurde.
* CX03 -- Inhalt: "Im System ist kein Post für die Codierung Nr. %num% hinterlegt." (wird angezeigt, wenn in der Tabelle mit der Zuordnung kein weiterer Post zu finden ist oder wenn ein Fehler in der fortlaufenden Nummerierung vorliegt).
* CX04 -- Inhalt: "Im System fehlt das Posting mit der ID %post%" (wird angezeigt, wenn ein Post nicht in der Datenbank für Inhalte zu finden ist).
===== Fragebogen =====
Unter **Fragebogen zusammenstellen** wird nun ein Fragebogen erstellt, welcher auf Seite 1 zunächst viel PHP-Code enthält ([[:de:create:php]]).
// Einlesen der Codierer:innen ID aus der URL
$coder = (int)reference();
if (!$coder) {
// Fehlermeldung anzeigen, falls keine Codierer:in ID übergeben wurde
text('CX02');
buttonHide();
pageStop();
}
put('CX01_01', $coder);
// Fortlaufende Nummer auslesen
$key = 'A'.$coder;
$info = dbGet($key);
if (!$info) {
$num = 0;
} else {
$num = (int)$info[0];
}
// Wir codieren nun die nächste (fortlaufende) Nummer
put('CX01_02', $num + 1);
// Post-ID ermitteln aus der Tabelle Codierer:in/Posts
$key = 'C'.$coder.'-'.value('CX01_02');
$info = dbGet($key);
if (!$info) {
show('CX03', ['%num%' => $key]);
buttonHide();
pageStop();
}
$postID = $info[2];
put('CX01_03', $postID);
// Post (Inhalt) abrufen
$info = dbGet('P'.$postID);
if (!$info) {
show('CX04', ['%post%' => $postID]);
buttonHide();
pageStop();
}
$html = $info[0];
put('CX01_04', $html);
Dieser Code macht folgendes:
* Zunächst wird die ID der Codierer:in aus der URL ausgelesen, dazu gleich mehr.
* Dann wird in der Datenbank für Inhalte nachgesehen, ob dort ein Eintrag mit dem Präfix "A" und der Codierer:innen ID zu finden ist, z.B. "A1" für Codierer:in 1. Bei Bedarf wird der Eintrag angelegt. Er speichert, bis zu welchem Post eine Codierer:in mit dem Codieren bereits gekommen ist. Die Nummer entspricht der fortlaufenden Nummer aus der zweiten Tabelle (Step).
* Anschließend wird aus der ID der Codierer:in und der nächsten fortlaufenden Nummer der Datenbankschlüssel mit dem C-Präfix erstellt, und in der Datenbank für Inhalte die entsprechende Zeile (z.B. "C1-1") abgerufen. In dieser Zeile ist (mit der zweiten Tabelle oben) vermerkt, welchen Post die Codierer:in bearbeiten soll. Im Beispiel wäre für "C1-1" die Information hinterlegt, dass Post 13 codiert werden soll (siehe zweite Tabelle).
* Zuletzt wird in der Datenbank für Inhalte nachgesehen, ob dort ein Post mit der entsprechenden ID zu finden ist. Der ID wird hier wieder das "P" vorangestellt, ''dbGet()'' sucht also nach einem Eintrag mit dem Schlüssel "P13".
Der Einfachheit halber speichert der Fragebogen den Text des Posts in eine interne Variable im Datensatz. Dadurch kann der Inhalt auf dieser und auf nachfolgenden Seiten mit dem folgenden PHP-Code angezeigt werden:
// Posting anzeigen
html(
''.
htmlspecialchars(value('CX01_04')).
''
);
Unter diesem PHP-Code müssen nur noch die Fragen in den Fragebogen gezogen werden, welche der Codierung dienen.
Nach den Seiten mit den Fragen (vor der "letzten Seite") wird noch eine weitere Seite einfügt, welche nur den folgenden PHP-Code enthält. Diese Seite dient dazu, dass nach Abschluss einer Codierung automatisch das nächste Posting zum Codieren aufgerufen wird.
// Hochgezählte fortlaufende Nummer speichern
$coder = value('CX02_01');
$num = value('CX02_02');
$key = 'A'.$coder;
dbSet($key, $num);
// Redirect zur nächsten Codierung
redirect('?r='.$coder);
===== Personalisierte Links =====
Nun benötigen die Codierer:innen noch individuelle Links, anhand derer der Fragebogen erkennt, welche Codierer:in etwas codieren möchte. Dafür wird an den Link zum Fragebogen eine Referenz angehängt. Wenn der normale Link zum Fragebogen also z.B. ''%%www.soscisurvey.de/coding/%%'' lautet, bekämen die Codierer:innen folgende Links mitgeteilt ([[:de:survey:url]]).
* Codierer:in 1: ''%%www.soscisurvey.de/coding/?r=1%%''
* Codierer:in 2: ''%%www.soscisurvey.de/coding/?r=2%%''
* Codierer:in 3: ''%%www.soscisurvey.de/coding/?r=3%%''
* Codierer:in 4: ''%%www.soscisurvey.de/coding/?r=4%%''
Testen Sie die Funktion des Fragebogens mit diesen Links. Wenn alles korrekt funktioniert, dann löschen Sie anschließend unter **Spezialfunktionen** -> **Datenbank für Inhalte** mit //Einträge löschen// die Einträge für die Schlüssel "A1" bis "A4" (die Zähler für die Codierung), damit die o.g. Links wieder mit dem jeweils ersten Post beginnen.
{{:de:create:scr.content-analysis.database-delete.png?nolink|Einzelne Einträge aus der Datenbank für Inhalte löschen}}