Anzeige

Zeilenumbruch aus textarea in csv verhindern

#1
Hallo zusammen,

falls das doch der falsche Thread ist, bitte Thema einfach verschieben...

Meine wenigkeit steht vor einem kleinen Problem.
Mein PHP aus der Ausbildung ist schon ein paar Jahre her.

Ich habe ein HTML Formular mit einer Textarea...
In dieser Textarea sind Zeilenumbrüche möglich.
Diese sollen aber nicht den weg in die CSV datei finden.
Ich möchte wenn ich die CSV in Exel öffne, das die komplette Textarea sich in einem Feld befindet.

Was habe ich Falsch gemacht?
Ich sehe es einfach nicht.
Ihr seht es bestimmt auf anhieb.

Könnt Ihr mir weiterhelfen?

Vielen Dank schonmal...

Hier das Formular (auch eine PHP datei = formular.php) :
HTML:
<?php
    fputs($dateiname, $daten);
?>

<form action="contact.php" method="post" class="comment-form" onsubmit="myFunction()">
  <input name="artikel-nr" id="artikel-nr" type="text" placeholder="Artikel-Nr." >
  <input name="fa-nr" id="fa-nr" type="text" placeholder="FA-Nr." >
  <input name="ab-nr" id="ab-nr" type="text" placeholder="AB-Nr." >
  <input name="datum" id="datum" type="text" placeholder="Datum TT.MM.JJJJ" >
  <input name="produktbezeichnung" id="produktbezeichnung" type="text" placeholder="Produktbezeichnung">
  <span>Produktionszeitraum von:</span>
  <select name="vtag" id="vtag">
   <option selected="selected">TT</option>
   <option>01</option>
   <option>02</option>
  </select>
  <select name="vmonat" id="vmonat">
   <option selected="selected">MM</option>
   <option>01</option>
   <option>02</option>
  </select>
  <select name="vjahr" id="vjahr">
   <option selected="selected">JJJJ</option>
   <option>2018</option>
   <option>2019</option>
  </select>
  <span>bis:</span>
  <select name="btag" id="btag">
   <option selected="selected">TT</option>
   <option>01</option>
   <option>02</option>
  </select>
  <select name="bmonat" id="bmonat">
   <option selected="selected">MM</option>
   <option>01</option>
   <option>02</option>
  </select>
  <select name="bjahr" id="bjahr">
   <option selected="selected">JJJJ</option>
   <option>2018</option>
   <option>2019</option>
  </select>
  <br />
  <br />
  <input name="personal-nr" id="personal-nr" type="text" placeholder="Deine Personal-Nr.">
  <select name="abteilung" id="abteilung">
   <option selected="selected">Meldende Abteilung</option>
   <option>Abteilung 1</option>
   <option>Abteilung 2</option>
  </select>
  <br>
  <textarea name="mgrund" id="mgrund" placeholder="Mutmaßlicher Grund"></textarea>
  <br />
  <select name="mabteilung" id="mabteilung">
   <option selected="selected">Mutmaßliche Abteilung</option>
   <option>Abteilung 1</option>
   <option>Abteilung 2</option>
  </select>
  <br>
  <br />
  <input name="makulatur" id="makulatur" type="text" placeholder="Entstandene Makulatur">
  <select name="einheiten" id="einheiten">
   <option selected="selected">Einheit Auswählen!</option>
   <option>Meter</option>
   <option>St&uuml;ck</option>
  </select>
  <br>
  <input name="zeitverlust" id="zeitverlust" type="text" placeholder="Entstandene Zeitverlust">
  <select name="zeinheiten" id="zeinheiten">
   <option selected="selected">Zeiteinheit Auswählen!</option>
   <option>Min</option>
   <option>Stunden</option>
  </select>
  <br>
  <textarea name="gegenmassnahmne" id="gegenmassnahmne" placeholder="Gegenmaßnahme"></textarea>
  <span>Muster</span>
  <input type="checkbox" name="rmuster" id="rmuster" />
  <br />
  <br />
  <input type="submit" id="submit_contact" value="Fehlerbericht senden">
  <script>
   function myFunction() {
   alert("Vielen Dank für deinen Fehlerbericht.");
   }
   </script>
</form>
Hier die verarbeitende PHP (contact.php):

PHP:
<?php

   $dz=fopen("fehler.csv","a");
       if(!$dz)
         {
           echo "Datei konnte nicht zum Schreiben geöffnet werden.";
           exit;
         }
         $save_code = $_POST['mgrund'];
           $save_code = str_replace("\r", "", $save_code);
           $save_code = str_replace("\n", "", $save_code);

   fputs($dz,$_POST['artikel-nr'].";"
       .$_POST['fa-nr'].";"
       .$_POST['ab-nr'].";"
       .$_POST['datum'].";"
       .$_POST['produktbezeichnung'].";"
       .$_POST['vtag'].";"
       .$_POST['vmonat'].";"
       .$_POST['vjahr'].";"
       .$_POST['btag'].";"
       .$_POST['bmonat'].";"
       .$_POST['bjahr'].";"
       .$_POST['personal-nr'].";"
       .$_POST['abteilung'].";"
       .$_POST['mgrund'].";"
       .$_POST['mabteilung'].";"
       .$_POST['makulatur'].";"
       .$_POST['einheiten'].";"
       .$_POST['zeitverlust'].";"
       .$_POST['einheiten'].";"
       .$_POST['zeinheiten'].";"
       .$_POST['gegenmassnahmne'].";"
       .$_POST['rmuster'].";\n");

   fclose($dz);
   echo "<p class='danke2'><i class='fa fa-thumbs-up'></i></p><br />
<p class='danke'>Dieser Bericht ist nun in gespeichert.</p>"

?>
 
#7
Jetzt habe ich folgendes Problem... Ich habe eine fortlaufende Nummer vergessen... Nennen wir sie Berichts-Nr.
Wie kriege ich es nun hin, dass beim schreiben der Daten in die .csv am Ende (letzte Spalte, letztes Feld in der Zeile) noch eine fortlaufende Nummer (Berichts-Nr.) mitgegeben wird. Bei jedem neuen Formular +1. Kann ich das nicht irgendwie mit einem $_POST mitgegeben?!
Das hat Prioriät, wegen späteren Auswertungen. Die Berichts-Nr. wäre natürlich Klasse wenn sie mittels "echo" im Formular angezeigt werden könnte.
 
Zuletzt bearbeitet:

EuroCent

KlappStuhl 2.0
#8
Dazu müsstest du vorweg erstmal wissen wie viele Berichte bereits existieren...

Ohne dieses Wissen wirst du immer auf die selbige Zahl stoßen wenn Du beispielsweise $bericht = +1 machst.

Der Wert muss ja irgendwie erstmal gespeichert werden und später beim nächsten Aufruf des Formulares um eins erhöht werden.

Ob dafür unbedingt einen DB erfolgen muss, musst du selbst wissen.

Man könnte aber auch mit TXT File arbeiten und diese mit der Id speichern...
 
#9
Dazu müsstest du vorweg erstmal wissen wie viele Berichte bereits existieren...

Ohne dieses Wissen wirst du immer auf die selbige Zahl stoßen wenn Du beispielsweise $bericht = +1 machst.

Der Wert muss ja irgendwie erstmal gespeichert werden und später beim nächsten Aufruf des Formulares um eins erhöht werden.

Ob dafür unbedingt einen DB erfolgen muss, musst du selbst wissen.

Man könnte aber auch mit TXT File arbeiten und diese mit der Id speichern...
In der CSV stehen 3 Berichte.
Wie kann, muss ich das dann nun umsetzen?
Das Problem ist, ich benötige die Nummer in der CSV damit man anhand der Nummer den Bericht wieder findet.
Meine Idee ist.
Ich habe 3 Berichte.
In der letzten Spalte eine 8-stellige Nummer.
Diese kann ich ja zuvor Abfragen.
Und +1 beim schreiben in die CSV.
Die neue 8-stellige Nummer kann ich dann in der Bestigung ausgeben. " Ihr Bericht mit der Nummer XY wurde gespeichert".
Diese kann ich dann anschließend per Mail versenden.
Das ist mein Gedanke.
 
Zuletzt bearbeitet:
#10
Ok das habe ich auch.

Nun muss ich die Inhalte des Formulars die ich in die CSV schreibe auch per Mail an eine feststehende Mailadress schicken.
Wie bekomme ich das gelöst?
 

Kalito

Erfahrenes Mitglied
#11
es wäre schon schön, wenn du verschiedene Probleme auch in verschiedene Threats aufteilst. Wo scheitert es den beim Mailversand?

stark vereinfacht:
PHP:
$empfaenger = "email@domain.de";
$sender= "email@domain.de";
$betreff = "Neuer Bericht";
$body= "Hallo Claudia!
        $user war gerade auf deinen PHP-Seiten und
        wollte dir sagen, dass sie ihm/ihr sehr gut
        gefallen.
        Wenn du mit ihm/ihr Kontakt aufnehmen
        m&ouml;chtest, benutze bitte die Adresse $usermail.";
mail($empfaenger, $betreff, $body, "From: $sender");
 
Anzeige

Neue Beiträge

Anzeige