Patrick Schröder: Zeilenumbruch im textarea bei Formularen

Hallo ihr!

Ich habe eine Frage zum Thema <textarea> bei Formularen.

Ähnlich wie ich hier im Forum einen Zeilenumbruch per einfachem Enter erzeuge, kann ich das ja ohne weiteres in jedem <textarea> auch machen. Nur wenn das Ganze dann abgesendet wird (in meinem Fall als PHP-MIME-Mail) kommt in der Mail kein Zeilenumbruch vor.
Es sei, ich gebe in dem Feld direkt <br>, also den HTML-Zeilenumbruch an. Dann wird in der HTML-Mail auch der Zeilenumbruch angezeigt.

Wie kann ich nun dem Textfeld beibringen, dass es einen per Enter erzeugten Zeilenumbruch auch im HTML als solchen ansieht / erkennt?

Hier (im Forum) im Quelltext habe ich den Zusatz
    accept-charset="ISO-8859-1,UTF-8"
gefunden. Hat der etwas damit zu tun?

Vielen Dank für eure Hilfe

Gruß Patrick

  1. habe d'ehre

    Wie kann ich nun dem Textfeld beibringen, dass es einen per Enter erzeugten Zeilenumbruch auch im HTML als solchen ansieht / erkennt?

    $formfield = str_replace("\n", "<br>", $formfield);

    --
    carpe diem
    Wilhelm
    1. Hallo Wilhelm!

      Danke dir erstmal für die fixe Antwort...

      An welcher Stelle im Formular sollte ich die Zeile einfügen, damit es ohne weiteres funktioniert?

      Gruß Patrick

      1. habe d'ehre

        An welcher Stelle im Formular sollte ich die Zeile einfügen, damit es ohne weiteres funktioniert?

        nach submit bei der Verarbeitung.

        --
        carpe diem
        Wilhelm
        1. Nochmal hallo Wilhelm,

          mein Problem ist, ich kann zwar einigermaßen mit php umgehen, aber ich bin jemand, der sich mit Fachausdrücken / Fachsprache schwertut. Muss das mit in den input-Tag rein oder dort wo die Mail deklariert wird? Habe keine Ahnung, was du in diesem Fall genau mit Verarbeitung meinst.

          Mal der Quelltext stark vereinfacht...

          <form action="abschicken.php" method="post">

          .....

          <textarea rows cols usw. value="cardtext"></textarea>
            <input type="submit" value="Abschicken">
          </form>

          oder in der abschicken.php

          //HTML-Version
          $MAILHTML='
                <html>
                  <head>
                    <title>eMail für '.$e_name.'</title>
                  </head>
                  <body bgcolor="#EEEEEE" text="#000000" link="#000000">
                    <p align="center">
                      <font face="Arial" size="2"><br><b>Hallo '.$e_name.',</b>
                      <br>diese eMail wurde dir von <a href="mailto:'.$a_mail.'">'.$a_name.'</a> geschickt!
                      <br>
                      <br><img src="http://www.ADRESSE.de/'.$bild.'" border="0">
                      <br>
                      <br>'.$cardtext.'
                    </p>
                  </body>
                </html>';

          //Betreff
          $BETREFF="Eine heisse eCard von einem Freund...";

          //Grenzen der einzelnen Mailteile
          $OB="----=_OuterBoundary_000";
          $IB="----=_InnerBoundary_001";

          //Definition des Mail-Headers
          $HEADER ="MIME-Version: 1.0\r\n";
          $HEADER.="From: ".$a_name." <".$a_mail.">\n";
          $HEADER.="Reply-To: ".$a_name." <".$a_mail.">\n";
          $HEADER.="X-Mailer: MyPHP-Mailer\n";
          $HEADER.="Content-Type: multipart/mixed;\n\tboundary="".$OB.""\n";
          $HEADER.="bcc: ".$a_name." <".$a_mail.">\n";

          $MAILINHALT ="This is a multi-part message in MIME format.\n";

          //Textteil der Mail
          $MAILINHALT.="\n--".$OB."\n";
          $MAILINHALT.="Content-Type: multipart/alternative;\n\tboundary="".$IB.""\n\n";
          $MAILINHALT.="\n--".$IB."\n";
          $MAILINHALT.="Content-Type: text/plain;\n\tcharset="iso-8859-1"\n";
          $MAILINHALT.="Content-Transfer-Encoding: quoted-printable\n\n";
          $MAILINHALT.=$MAILTEXT."\n\n";

          //HTML-Teil der Mail
          $MAILINHALT.="\n--".$IB."\n";
          $MAILINHALT.="Content-Type: text/html;\n\tcharset="iso-8859-1"\n";
          $MAILINHALT.="Content-Transfer-Encoding: base64\n\n";
          $MAILINHALT.=chunk_split(base64_encode($MAILHTML))."\n\n";
          $MAILINHALT.="\n--".$IB."--\n";

          //Senden der Mail
          mail($e_mail,$BETREFF,$MAILINHALT,$HEADER);

          ?>

          Sorry, dass ich mich vielleicht grad etwas dämlich anstelle, aber vor lauter herumprobieren und ? im Kopf versteh ich im Moment nur die Hälfte.

          Gruß Patrick

          1. habe d'ehre

            Bevor Du die Variable ausgibst. Fuer Nicht-HTML muessen die \n natuerlich bleiben, also eine eigene neue Variable

            //HTML-Version

            $cardtexthtml = str_replace("\n", "<br>", $_POST['cardtext']);
            $cardtext     = $_POST['cardtext']);

            <br>
                        <br>'.$cardtexthtml.'
                      </p>
                    </body>
                  </html>';

            Die $cardtext wird ja im Formular uebergeben, ab PHP4.1 musst Du bei register_global off mit $_POST ran

            --
            carpe diem
            Wilhelm
            1. Jooo... wunderbar!

              Ich musste zwar noch ein paar Kleinigkeiten dran ändern, weil auf dem Server leider ne ältere php-Version liegt und er zwei Fehler ausgegeben hatte, aber nu funktioniert es!

              Dankeschön!

              Gruß Patrick