<br /> fehler in <textarea> Feldern...

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • <br /> fehler in <textarea> Feldern...

    Ich hab n' Newsscript gemacht und wenn ich da einen Newsbeitrag editiere und da sind mehrere Zeilen,dann steht da immer so ein komisches "<br />".
    Hmm...wie soll ich das erklären...
    Das sieht ungefähr so aus:

    PHP-Code:
    test
    test 
    So sieht dann meine gepostester Newsbeitrag aus.Wenn ich ihn editiere sieht er dann so aus:
    PHP-Code:
    test
    <br />
    test 
    Wenn ich das <br /> wegnehme,dann ist da keine zweite Zeile mehr...Wie krieg ich das <br /> weg?
    mit str_replace("<br />","","$newsmessage") funktioniert das nicht...Dann ist <br /> immernoch da...
    Dann ist da noch ein komisches Problem:
    Bei nochmaligem Editieren,kommen immer mehr <br />'s dazu...
    Ich versteh die Welt nicht mehr...

    Ach ja,das <br /> sieht man im Beitrag nicht...

  • #2
    Ich schätze mal Du hast irgendwo die Funktion nl2br() in Verwendung. Vermutlich bevor Du den Text in die Datenbank schreibst. Kann das sein?
    Dieses nl2br() muß dort weg und soll nur verwendet werden wenn Du den Text via HTML außerhalb eines Formfields ausgibst.

    Kommentar


    • #3
      Beschreibung:
      string nl2br ( string string)

      Gibt den string mit einem eingefügten '<br />' vor dem Neue-Zeile-Zeichen zurück.
      Beantworte nie Threads mit mehr als 15 followups...
      Real programmers confuse Halloween and Christmas because OCT 31 = DEC 25

      Kommentar


      • #4
        Wenn ich nl2br nicht verwende,dann werden doch aber keine Zeilen geparsed,oder?Dann bleibt das doch alles in einer Zeile...
        [EDIT]
        Nein,dann werden keine Zeilen geparsed...

        Kommentar


        • #5
          was hast du denn gegen das "<br />" ?

          das ist doch praktisch und schon gleich xml konform.
          Dieses Schreiben wurde automatisch erstellt und ist ohne Unterschrift gültig.

          Kommentar


          • #6
            Poste mal etwas Code ... :

            Wie baust Du die Textarea ...
            Wie speicherst Du den Inhalt der Textarea ...
            Wie stellst Du den Text im CMS dar ...
            carpe noctem

            [color=blue]Bitte keine Fragen per EMail ... im Forum haben alle was davon ... und ich beantworte EMail-Fragen von Foren-Mitgliedern in der Regel eh nicht![/color]
            [color=red]Hinweis: Ich bin weder Mitglied noch Angestellter von ebiz-consult! Alles was ich hier von mir gebe tue ich in eigener Verantwortung![/color]

            Kommentar


            • #7
              Original geschrieben von hand
              Dieses nl2br() ... soll nur verwendet werden wenn Du den Text via HTML außerhalb eines Formfields ausgibst.

              Kommentar


              • #8
                htmlentities würde ich aber in jedem Fall verwenden ... sonst schreib mal "</textarea>" in die Textarea & gib es dann wieder aus ...
                mein Sport: mein Frühstück: meine Arbeit:

                Sämtliche Code-Schnipsel sind im Allgemeinen nicht getestet und werden ohne Gewähr auf Fehlerfreiheit und Korrektheit gepostet.

                Kommentar


                • #9
                  PHP-Code:
                  <textarea cols="65" rows="15" wrap="soft" name="post" value="$post">$message[message]</textarea
                  Das ist die textarea der Edit-Funktion...

                  PHP-Code:
                  $db->query("UPDATE posts SET username='$username', email='$email', icq='$icq', aim='$aim', msn='$msn', herkunft='$herkunft', titel='$titel', posttime='$time', message='$post', posticon='$posticon' WHERE postid='$postid' "); 
                  So wird das was editiert wurde gespeichert.

                  PHP-Code:
                  $query_result $db->query("SELECT * FROM query");
                  $querys $db->fetch_array($query_result);
                  $message_result $db->query("SELECT $querys[querys_select] FROM $querys[querys_from] ORDER BY $querys[querys_order]"); 
                  So query ich mir die News auf der Hauptseite.

                  Bevor ich ein post speichere,mach ich noch das hier:
                  PHP-Code:
                  function prepare_editmessage($data)
                  {
                  $data=htmlentities($data);
                  return 
                  $data;
                  }

                  $message =  prepare_editmessage($message); 
                  So,mehr gibts nicht zu posten
                  Wenn ich einen Beitrag Schreibe,dann ist hab ich die gleiche routine wie bei "prepare_editmessage",bloss das ich da noch
                  $data=nl2br($data);
                  drinnen stehen habe.Ohne das,schreibt er ja nicht verschiedene Zeilen in die DB...

                  P.S.:
                  Nicht über die Variablen wundern,ist ein halb Guestbook halb Newscript-Script :P
                  Zuletzt geändert von V 9 1 9 V; 12.07.2002, 19:43.

                  Kommentar


                  • #10
                    Original geschrieben von V 9 1 9 V
                    [EDIT]
                    *argh*Bin irgendwie auf abschicekn gekommen...das post editier ich grad noch...
                    Na dann warten wir halt mal ....

                    Fürs Erste ist das O.K.

                    Dauert aber lange ...
                    Zuletzt geändert von hand; 12.07.2002, 19:38.

                    Kommentar


                    • #11
                      Wenn Du die Daten über eine Textarea zuvor eingegeben hast und dabei Zeilenumbrüche verwendet hast, dann stehen die Zeilenumbrüche danach auch in der Datenbank und zwar als ASCII Werte, die ansich \n entsprechen.

                      Wenn Du nun den Inhalt wieder in einer Textarea ausgibst wirst Du sehen, daß die Zeilenumbrüche noch da sind.

                      Wenn Du aber den Inhalt mit den Zeilenumbrüchen im HTML darstellen möchtest - ansich will man das ja - dann must Du die Funktion nl2br() verwenden. nl2br() ersetzt dann diese Zeilenumbrüche \n mit <br /> und der Browser handelt eben danach.

                      Es ist auch nicht erforderlich vor dem Eintrag in die DB den String mit htmlentities() zu bearbeiten. Aber bei der Ausgabe hingegen ist das ganz günstig.

                      Also bei der Ausgabe, wenn kein Textarea-Formfeld mit dem Inhalt befüllt werden soll:

                      print nl2br(htmlentities($feldinhalt));

                      Kommentar


                      • #12
                        Äh...also...Wenn ich das richtig verstanden habe(und das glaube ich nicht),dann besteht keine Lösung?

                        Kommentar


                        • #13
                          Logo gibt es eine Lösung! Du hast Sie ja schon!

                          Alle Records die Du ab jetzt erfaßt, bearbeitest Du ja nicht mehr mit nl2br() bevor Du den Record in die DB schreibst - das ist bereits die Lösung.

                          Und nur jetzt, wenn Du eine stinklangweilige HTML Seite generierst und Du dort Zeilenumbrüche haben willst, dann und nur dann verwendest Du eben nl2br(), damit die \n die aus der DB ausgelesen in <br /> umgewandelt werden und der Browser den Zeilenumbruch macht.

                          Wenn Du den aus der DB elesenen Text wieder editieren willst, also in der Textarea dafür anzeigen willst, dann verzichtest Du eben auf das nl2br().

                          Bei den alten Records wird er Dir in der Textarea die <br /> anzeigen, da ja früher die Zeilenumbrüche in <br /> umgewandelt wurden. Wenn Du sie jetzt weglöscht, werden sie dann auch nicht mehr auftauchen.

                          Kommentar


                          • #14
                            THX!
                            Sorry,hab halt nichts gecheckt!Danke!HAMMER!GOIL!
                            Großes Lob an das Forum hier!
                            Hier wird echt gut geholfen!

                            Kommentar

                            Lädt...
                            X