Hallo zusammen,
die Eintragungen in einem HTML-Formular sollen in eine csv-Datei geschrieben werden. Bis auf zwei kleine Schönheitsfehler klappt das auch.
Bei Eintragungen in einem <textarea>-Feld werden von den Nutzern des Formulars oft mehrere Zeilen (auch Leerzeilen) geschrieben. Diese Eintragungen möchte ich in der csv-Datei aber in *einer* Zeile stehen haben. Dazu wollte ich folgenden verwenden:
$wert = $Form{$field};
$wert =~ s/\n/ /gim;
print CSVFILE "$wert;";
Ich wollte also einen Zeilenumbruch durch ein Leerzeichen ersetzen. Aber leider stehen immer noch die Inhalte der <textarea>-Felder in mehreren Zielen in der csv-Datei.
Außerdem hätte ich gerne, dass Felder, in denen nix steht, ein ";" geschrieben wird, weil die csv-Datei in Excel ausgewertet werden soll. Sind in einem Feld keine Eintragungen gemacht worden, so sind die Werte in den Spalten entsprechend den ausgelassenen Feldern nach links verschoben und müssen in Excel von Hand wieder an die richtige Stelle geschoben werden.
Die Konstruktion
if ($wert == "") {
print CSVFILE ";";
}
schreibt hinter *jedes* Feld ein zusätzliches Leerzeichen
feld1;;feld2;;feld3;;
und nicht, wie ich es wollte
feld1;;feld3;
wenn z.B. feld 2 nicht ausgefüllt wurde.
Danke für Hinweise zu den beiden Problemen.
Pampel