Zeilenumbruch in Textarea

crsakawolf

Erfahrenes Mitglied
Hallo Kollegen,

ich brauch mal hilfe.

ich habe ein Formular, welches ich dann per PHP Übergebe und als Vorschauf ausgebe.

Wenn ich die Vorschau erstellen lasse, möchte ich jedoch, das die Formularfelder mit den Werten befüllt sind.

Problematisch ist hier das bei Zeilenumbruchen in der Textarea keine Befüllung stattfindet.

Kann jmd helfen?

Es handelt sich um das feld "an" und "textfeld"

Hier der Quellcode:

Code:
<html>
<head>
<script type='text/javascript' src='../bbcodes.js'></script>
</head>

<body>

<form action='".$PHP_SELF."' method='POST' name='hausmitteilungsform' >
<table style='border:1px solid black;background-color:#e9f5f5;padding:15px;'>
<tr>
    <td width='90'>Datum:</td>
    <td><input type='text' name='datum' size='10' maxlength='10'></td>
    <td width='90'>Nummer:</td>
    <td><input type='text' name='nummer' size='7' maxlength='7'></td>
</tr>
<tr>
    <td width='90'>Ersteller:</td>
    <td width=''><input type='textfeld' name='ersteller' onFocus='fokusiert=this'></td>
    <td width='90'>Referat:</td>
    <td><input type='text' name='referat' onFocus='fokusiert=this'></td>
</tr>
<tr>
    <td width='90'>An:</td>
    <td colspan='3'><textarea cols='60' rows='5' name='an' onFocus='focused=this'></textarea></td>
</tr>
<tr>
    <td width='90'>Titel:</td>
    <td colspan='3'><input type='text' name='titel' size='79' onFocus='focused=this'></td>
</tr>
<tr>
    <td>&nbsp;</td>
    <td colspan='3'>
        <table align='center' border='0' cellpadding='0' cellspacin='0'>
               <tr>
                <td><input style='width:40px;text-decoration:underline'  onclick=\"setBBcodes('u')\" type='button' value='u'></td>
                <td><input style='width:40px;font-weight:bold' onclick=\"setBBcodes('b')\" type='button' value='b'></td>
                <td><input style='width:40px;font-style:italic' onclick=\"setBBcodes('k')\" type='button' value='k'></td>
                <td><input style='width:40px;' type='button' onclick=\"setBBcodes('sp')\" value='x²'></td>
                <td><input style='width:40px;' type='button' onclick=\"setBBcodes('link')\" value='Link'></td>
                <td><input style='width:40px;' onclick=\"setBBcodes('pic')\" type='button' value='Bild'></td>
               </tr>
        </table>
    </td>
</tr>
<tr>
    <td width='90'>Text:</td>
    <td colspan='3'><textarea cols='60' rows='15' name='textfeld' onFocus='focused=this'></textarea></td>
</tr>
<tr>
    <td width='90'>Dateiname:</td>
    <td><input type='text' name='datei_name'></td>
    <td colspan='2' align='center'>Eintrag unter 'Neues'&nbsp;&nbsp;  <input type='checkbox' name='neues' value='1' checked='checked'></td>
</tr>
<tr>
    <td colspan='4' align='center'><br>
        <input type='submit' name='send' value='Speichern'>
        <input type='submit' name='vorschau' value='Vorschau'>
        <INPUT TYPE='RESET' VALUE='Reset'>
    </td>
</tr>
</table>
</form>
</body>
</html>

PHP:
if(!empty($_POST['vorschau']))
{

 $htm = file_get_contents("../muster/hausmitteilung.tpl");

 echo "<script type='text/javascript'>
         document.hausmitteilungsform.datum.value+='".$_POST['datum']."';
         document.hausmitteilungsform.nummer.value+='".$_POST['nummer']."';
         document.hausmitteilungsform.ersteller.value+='".$_POST['ersteller']."';
         document.hausmitteilungsform.referat.value+='".$_POST['referat']."';
         document.hausmitteilungsform.an.text+='".$_POST['an']."';
         document.hausmitteilungsform.titel.value+='".$_POST['titel']."';
         document.hausmitteilungsform.textfeld.value+='".$_POST['textfeld']."';
         document.hausmitteilungsform.datei_name.value+='".$_POST['datei_name']."';
 </script>";

 $htm = str_replace("{nummer}",strip_bbcodes($_POST['nummer']),$htm);
 $htm = str_replace("{ersteller}",strip_bbcodes($_POST['ersteller']),$htm);
 $htm = str_replace("{referat}",strip_bbcodes($_POST['referat']),$htm);
 $htm = str_replace("{datum}",strip_bbcodes($_POST['datum']),$htm);
 $htm = str_replace("{an}",strip_bbcodes($_POST['an']),$htm);
 $htm = str_replace("{titel}",strip_bbcodes($_POST['titel']),$htm);
 $htm = str_replace("{text}",strip_bbcodes($_POST['textfeld']),$htm);

 echo "<table style='border:1px solid black; width:800px'><tr><td>";
 echo "<br>".$htm;
 echo "<br><br><br></td></tr></table>";
}
 
also ich habe bei Input feldern zb kein Problem,

jedoch wie gesagt bei den Textareas.

ich poste mal den ganzen code..

Mit dem Link, den du mir gesendet hattest funktioniert es leider nicht.


PHP:
<?

echo "
<html>
<head>
<script type='text/javascript' src='../bbcodes.js'></script>
</head>

<body>

<form action='".$PHP_SELF."' method='POST' name='hausmitteilungsform' >
<table style='border:1px solid black;background-color:#e9f5f5;padding:15px;'>
<tr>
    <td width='90'>Datum:</td>
    <td><input type='text' name='datum' size='10' maxlength='10'></td>
    <td width='90'>Nummer:</td>
    <td><input type='text' name='nummer' size='7' maxlength='7'></td>
</tr>
<tr>
    <td width='90'>Ersteller:</td>
    <td width=''><input type='text' name='ersteller' onFocus='fokusiert=this'></td>
    <td width='90'>Referat:</td>
    <td><input type='text' name='referat' onFocus='fokusiert=this'></td>
</tr>
<tr>
    <td width='90'>An:</td>
    <td colspan='3'><textarea cols='60' rows='5' name='an' onFocus='focused=this'></textarea></td>
</tr>
<tr>
    <td width='90'>Titel:</td>
    <td colspan='3'><input type='text' name='titel' size='79' onFocus='focused=this'></td>
</tr>
<tr>
    <td>&nbsp;</td>
    <td colspan='3'>
        <table align='center' border='0' cellpadding='0' cellspacin='0'>
               <tr>
                <td><input style='width:40px;text-decoration:underline'  onclick=\"setBBcodes('u')\" type='button' value='u'></td>
                <td><input style='width:40px;font-weight:bold' onclick=\"setBBcodes('b')\" type='button' value='b'></td>
                <td><input style='width:40px;font-style:italic' onclick=\"setBBcodes('k')\" type='button' value='k'></td>
                <td><input style='width:40px;' type='button' onclick=\"setBBcodes('sp')\" value='x²'></td>
                <td><input style='width:40px;' type='button' onclick=\"setBBcodes('link')\" value='Link'></td>
                <td><input style='width:40px;' onclick=\"setBBcodes('pic')\" type='button' value='Bild'></td>
               </tr>
        </table>
    </td>
</tr>
<tr>
    <td width='90'>Text:</td>
    <td colspan='3'><textarea cols='60' rows='15' name='textfeld' onFocus='focused=this'></textarea></td>
</tr>
<tr>
    <td width='90'>Dateiname:</td>
    <td><input type='text' name='datei_name'></td>
    <td colspan='2' align='center'>Eintrag unter 'Neues'&nbsp;&nbsp;  <input type='checkbox' name='neues' value='1' checked='checked'></td>
</tr>
<tr>
    <td colspan='4' align='center'><br>
        <input type='submit' name='send' value='Speichern'>
        <input type='submit' name='vorschau' value='Vorschau'>
        <INPUT TYPE='RESET' VALUE='Reset'>
    </td>
</tr>
</table>
</form>
</body>
</html>
";

include("../decrypt.inc");


if(!empty($_POST['send']))
{
 $datei_name = explode(".",strtolower($_POST['datei_name']));

 $datei_name = $datei_name[0].".htm";

 $htm = file_get_contents("../muster/hausmitteilung.tpl");

 $htm = str_replace("{nummer}",strip_bbcodes($_POST['nummer']),$htm);
 $htm = str_replace("{ersteller}",strip_bbcodes($_POST['ersteller']),$htm);
 $htm = str_replace("{referat}",strip_bbcodes($_POST['referat']),$htm);
 $htm = str_replace("{datum}",strip_bbcodes($_POST['datum']),$htm);
 $htm = str_replace("{an}",strip_bbcodes($_POST['an']),$htm);
 $htm = str_replace("{titel}",strip_bbcodes($_POST['titel']),$htm);
 $htm = str_replace("{text}",strip_bbcodes($_POST['textfeld']),$htm);


 $filename = "../../../Pfad/".$datei_name;
 if(file_exists($filename))
 {
  echo "Die Datei mit dem Namen ".$datei_name." exisitiert bereits. Bitte geben Sie einen neuen Dateinamen ein.<br><a href='javascript:history.back();'>Zurück</a>";
 }else{
  if($f = fopen($filename,"w"))
  {
          fwrite($f,$htm);
          fclose($f);
          echo "<br>Datei wurde erfolgreich erstellt<br><a href='".$filename."'>".$datei_name."</a>";
  }else{
        echo "<br>Fehler beim Schreiben in die Datei<br>";
  }
 }
}

if(!empty($_POST['vorschau']))
{

 $htm = file_get_contents("../muster/hausmitteilung.tpl");

 echo "<script type='text/javascript'>
         document.hausmitteilungsform.datum.value+='".$_POST['datum']."';
         document.hausmitteilungsform.nummer.value+='".$_POST['nummer']."';
         document.hausmitteilungsform.ersteller.value+='".$_POST['ersteller']."';
         document.hausmitteilungsform.referat.value+='".$_POST['referat']."';
         document.hausmitteilungsform.an.value+='".$_POST['an']."';
         document.hausmitteilungsform.titel.value+='".$_POST['titel']."';
         document.hausmitteilungsform.textfeld.value+='".$_POST['textfeld']."';
         document.hausmitteilungsform.datei_name.value+='".$_POST['datei_name']."';
 </script>";

 $htm = str_replace("{nummer}",strip_bbcodes($_POST['nummer']),$htm);
 $htm = str_replace("{ersteller}",strip_bbcodes($_POST['ersteller']),$htm);
 $htm = str_replace("{referat}",strip_bbcodes($_POST['referat']),$htm);
 $htm = str_replace("{datum}",strip_bbcodes($_POST['datum']),$htm);
 $htm = str_replace("{an}",strip_bbcodes($_POST['an']),$htm);
 $htm = str_replace("{titel}",strip_bbcodes($_POST['titel']),$htm);
 $htm = str_replace("{text}",strip_bbcodes($_POST['textfeld']),$htm);


 echo "<table style='border:1px solid black; width:800px'>";
 echo "<tr><td><div align='center'<a href='javascript:history.back();' style='font-size:16px;'>Bearbeiten</a></div></td></tr>";
 echo "<tr><td><br>".$htm;
 echo "<br><br><br></td></tr></table>";
}

?>
 
Zuletzt bearbeitet:
Ich bin mir nich sicher, ob ich die Frage verstanden hab aber ich würde die Zeilenumbrüche weglassen und bei ner Tabelle so was wie

STYLE="white-space:normal"

verwenden. Das bricht von alleine dann an passenden Stellen um.
 
Nö, das Problem ist folgendes:

Sendet ein User Daten, welche einen Zeileumbruch enthalten, bspw:
Code:
Zeile1
Zeile2
Zeile3

...und man gibt das so einfach im JS-Code aus:

Code:
var uservariable='Zeile1
Zeile2
Zeile3';
...erzeugt dies einen Syntaxfehler, da solche mehrzeiligen Strings in JS nicht legitim sind.

Der von mir oberhalb verlinkte Lösungsvorschlag umgeht dies Problem, da dort bspw. Zeilenumbrüche codiert werden.
 
Also um das nochmal detailierter Darzustellen,

dieses Formular erzeugt eine htm datei.
Ich möchte jedoch eine Vorschau erstellen.

wenn mann also auf den Knopf "Vorschau" Klickt,

soll unter dem Eingabeformular die "Seite" ausgegeben werden.
Zudem sollen bei der Vorschau die Felder wieder befüllt werden, damit man Sie gleich ändern kann.

Dazu benötige ich auch die Zeilenumbrüche innerhalb der Textareas, da die htm diese enthalten soll.

@Sven Mintel: Könntest du mir eventuell anhand meines Quelltextes ein beispiel geben? Ich wäre dir sehr verbunden
 
@Sven Mintel: Könntest du mir eventuell anhand meines Quelltextes ein beispiel geben? Ich wäre dir sehr verbunden

Halt so, wie es in den Webmaster-FAQ beschrieben ist:

PHP:
echo "
<script type='text/javascript'>
document.hausmitteilungsform.datum.value+=     unescape('".rawurlencode($_POST['datum']).");
document.hausmitteilungsform.nummer.value+=    unescape('".rawurlencode($_POST['nummer']).");
document.hausmitteilungsform.ersteller.value+= unescape('".rawurlencode($_POST['ersteller']).");
document.hausmitteilungsform.referat.value+=   unescape('".rawurlencode($_POST['referat']).");
document.hausmitteilungsform.an.value+=        unescape('".rawurlencode($_POST['an']).");
document.hausmitteilungsform.titel.value+=     unescape('".rawurlencode($_POST['titel']).");
document.hausmitteilungsform.textfeld.value+=  unescape('".rawurlencode($_POST['textfeld']).");
document.hausmitteilungsform.datei_name.value+=unescape('".rawurlencode($_POST['datei_name']).");
</script>
";
 

Neue Beiträge

Zurück