0 votes
in SoSci Survey (dt.) by s072745 (225 points)

Das ist schon mal super, ich hatte mich geirrt.

So wie ich es verstehe, überschreiben sich alle Einträge in der Datenbank wenn ich Inhalte über denselben Schlüssel abspeichere bzw. in die Datenbank schreiben lasse.

Gibt es einen Weg über Beibehaltung alter Einträge zum Beispiel in Spalte eins und zwei einfach noch Einträge in Spalte drei und vier hinzuschreiben ohne alte Einträge zu verlieren?

Danke für die viele, schnelle Hilfe!

related to an answer for: Mehr Spalten in der Datenbank für Inhalte

1 Answer

0 votes
by SoSci Survey (328k points)

Gibt es einen Weg über Beibehaltung alter Einträge zum Beispiel in Spalte eins und zwei einfach noch Einträge in Spalte drei und vier hinzuschreiben ohne alte Einträge zu verlieren?

Es kommt darauf an, ob das während des Interviews passieren soll oder in der Projektverwaltung.

Während dem Interview würden Sie den Eintag auslesen, die Werte verschieben und dann überschreiben:

$data = dbGet(...);
$data[3] = $data[1];
$data[2] = $data[0];
$data[1] = ...;
$data[0] = ...;
dbSet(..., $data);

Wenn SIe den kompletten Inhalt der Datenbank ändern möchten, laden Sie den Inhalt als CSV-Datei herunter, öffnen Sie es in LIbreOffice (oder Excel, aber das zickt öfter herum), fügen Sie die beiden Spalten vorne ein, speichern Sie als CSV, und importieren Sie diese Datei in SoSci Survey.

by s072745 (225 points)
Das scheint mir eine spannende Lösung.

Damit ich es verstehe - ich könnte z.B. den Eintrag der ersten und zweiten Spalte auslesen und schreibe diese Einträge dann direkt in Spalte drei und vier? Könnte ich dann im gleichen "Atemzug" zwei neue Einträge aus Antworten auf Textfelder in Spalte eins und zwei schreiben?

Ungefähr so?

$data = dbGet(...);
$data[1] = $data[3];
$data[2] = $data[4];;
dbSet(..., $data);

$data = array(
  value('A004_01'),
  value('A402_01'),
  $data[3],
  $data[4]
);
dbSet(caseSerial(), $data);

Das würde sehr helfen, weil ich dann das Untereinanderschreiben verhindern kann.

Danke für die Hilfe!

Beste Grüße
by SoSci Survey (328k points)
> ich könnte z.B. den Eintrag der ersten und zweiten Spalte auslesen und schreibe diese Einträge dann direkt in Spalte drei und vier?

Ja - aber das funktioniert genau andersherum als Sie es schreiben. Und wenn Sie das Array ohnehin neu definieren, dann brauchen Sie den ersten Teil auch nicht.

$data = dbGet(caseSerial());
$data = array(
  value('A004_01'),
  value('A402_01'),
  $data[0],
  $data[1]
);
dbSet(caseSerial(), $data);

Wichtig: Bei den Indizes in eckigen Klammern zählt PHP ab 0, nicht ab 1. $data[3] ist also Spalte 4.

Und noch ein Tipp: Schreiben Sie die Daten gleich von vornherein in die "richtigen" Spalten anstatt etwas zu verschieben. Wenn jemand nämlich die Seite doppelt lädt ("Seite neu Laden" oder "Zurück"), dann werden die Werte sonst schnell zweimal verschoben.

Mit getRoute() kann man das oft verhindern. Aber wenn man die Spalten gleich fix definiert, dann spart man sich Ärger.

$data = dbGet(caseSerial());
$data = array(
  $data[0],
  $data[1],
  value('A004_01'),
  value('A402_01')
);
dbSet(caseSerial(), $data);
by s072745 (225 points)
Lieber Herr Leiner,
ich wollte mich einmal bedanken.

Unser Problem ist nun gelöst! Toll, was die Datenbank alles kann.

Viele Grüße

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

...