textarea mit automatischen <br> etc

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

  • textarea mit automatischen <br> etc

    gruss ich möchte gerne ein ein Formular z.B ein News formular coden !
    hab es schon komplett fetig und schreibt alles schön in die Datenbank
    problem an der sache ist ja nur wenn ich es aus der Datenbank
    ausgebe dann übernimmt er nicht die zeichenfolge d.h

    wen ich z.B

    hallo
    das sind
    meine news


    reinschreibe

    rückt er alles zusammen quasi so hallo das sind meine news

    ich muss im formular immer selber die brakes setzen


    PHP-Code:
    <?
    ...
    $result = mysql_query($sql) ;

    while ($line = mysql_fetch_array($result)) { ?>

    Heutige News 
    <?=$line[news]?>


      <?PHP
    }
    mysql_free_result($result);
    mysql_close();
    ?>
    ....

  • #2
    Das liegt daran, dass der Zeilenumbruch nur im Quellcode besteht, geh mal auf Quelltext anzeigen.

    Wenn du vor der Ausgabe nl2br durchführst werden "echte" HTML-Zeilenumbrüche eingefügt.
    PHP-Code:
    echo nl2br($quellcode); 

    Kommentar


    • #3
      also in dem falle


      echo nl2br(line[news]);



      ja ?

      erstmal vielen dank
      Zuletzt geändert von predi110; 03.01.2006, 17:33.

      Kommentar


      • #4
        super geht ! DANKE

        Kommentar


        • #5
          Hallo!

          Ich habe ein ähnliches Problem!

          Daten aus der Datenbank stelle ich mit pre dar, das funktioniert auch soweit. Nach 130 zeichen erfolgt per wordwrap() ein automatischer Umbruch.

          Bis hierhin funktioniert alles!

          Sobald ich aber etwas zitiere (geht logischerweise nur über kopieren/einfügen (Fullquotes will ich nicht haben)) und den kopierten Text nun in das Formular einfüge, erscheinen die Zeilenumbrüche nicht im gespeicherten Beitrag. Im Formular werden die Umbrüche von HTML erkannt.
          Der kopierte Text wird in die Tags [q]Zitat[/q] eingefügt!

          [q] wird durch:
          <table bgcolor=#F7FFCE border=1><tr><td>Zitat:</tr><tr><td>
          ersetzt.

          [/q] durch:
          </td></tr></table>

          Kopierter Text ala:

          Zeile1
          Zeile2
          Zeile3

          wird im Zitat als Zeile1 Zeile2 Zeile3 dargestellt.

          Ausserhalb von [q]bla[/q] werden die Zeilenumbrüche befolgt.

          Übergebe ich meine Nachricht nl2br(), wird innerhalb der Zitattabelle korrekt umgebrochen, alle anderen einfachen Zeilenumbrüche werden allerdings doppelt ausgeführt!!!

          Woran liegt das?
          Gruß,
          sunset02

          edit:
          Sorry, verklickt! Das richtige Smilie ist nun an seinem Ort!
          Zuletzt geändert von Sunset02; 07.01.2006, 02:47.

          Kommentar


          • #6
            Am besten du zeigst mal den relevaten Code, durch deine Beschreibung steige ich nciht ganz durch.
            Beachte: http://php-resource.de/forum/showthr...threadid=50454
            mfg - sagg

            Kommentar


            • #7
              Hi!

              Der relevante Code steht schon in meinem Beitrag davor.
              Speichern und laden von Daten aus der Datenbank funktioniert und hat mit dem Problem wohl nichts zu tun.

              Im Folgenden ist alles nochmal ausführlichst erklärt!

              Speichern in der Datenbank von:
              [COLOR=darkblue]"Hallo dies ist ein Text
              mit Zeilenumbruch"[/COLOR]

              und ausgeben
              PHP-Code:
              echo "<pre>$getData[inhalt]</pre>"
              ergibt:
              [COLOR=darkblue]"Hallo dies ist ein Text
              mit Zeilenumbruch"[/COLOR]

              Für Zitate klickt der Anwender auf einen Button und in das Eingabefeld (textarea) werden [COLOR=firebrick][q][/q][/COLOR] Tags eingefügt.
              Wird nun z.B. folgender Text zitiert:
              [COLOR=green]"Zeile1
              Zeile2
              Zeile3"[/COLOR]

              sieht der neue Eintrag im Formularfeld so aus:
              [COLOR=darkblue]"Hallo dies ist ein Text
              mit Zeilenumbruch"[/COLOR]

              [COLOR=firebrick][q][/COLOR][COLOR=green]"Zeile1
              Zeile2
              Zeile3"[/COLOR][COLOR=firebrick][/q][/COLOR]

              Genau diesen Text speichere ich in der Datenbank ab.
              Zum Ausgeben hol ich mir die Nachricht per Abfrage und ersetze diverse Tags.
              In diesem Fall:
              PHP-Code:
              $row['inhalt'] = str_replace('[q]''<table bgcolor=#F7FFCE border=1><tr><td>Zitat:</tr>
              <tr><td>'
              $row['inhalt']);

              $row['inhalt'] = str_replace('[/q]''</td></tr></table>'$row['inhalt']); 
              Ist also nichts anderes, als eine Tabelle mit "Zitat:" in der ersten Zeile und dem Zitattext in der 2. Zeile.

              Die Ausgabe sind nun so aus:
              [COLOR=indigo]"Hallo dies ist ein Text
              mit Zeilenumbruch"

              Zitat:
              "Zeile1Zeile2Zeile3"[/COLOR]

              Wie man sieht wird innerhalb der Zitattabelle im Beitrag nicht umgebrochen. Naja mal schauen was nl2br bringt...
              PHP-Code:
              $row['inhalt'] = nl2br($row['inhalt']); 
              Das erzeugt nun diese Ausgabe:
              [COLOR=indigo]"Hallo dies ist ein Text

              mit Zeilenumbruch"

              Zitat:
              "Zeile1
              Zeile2
              Zeile3"[/COLOR]

              nl2br macht ja nichts anderes als:
              "Gibt den string mit einem vor allen Neue-Zeile-Zeichen eingefügten '<br />' zurück."

              Ausserhalb des Zitates wird aus einem einfachen Zeilenumbruch ein doppelter.
              Im Zitat wird nun aus keinem Zeilenumbruch ein Zeilenumbruch!
              Dieser vorher "nicht vorhandene" Zeilenumbruch muss aber vorhanden sein, weil die Funktion nl2br ihn ja korrekt erkennt!

              Meine Frage ist nun warum er in der Zitattabelle von html nicht erkannt und dargestellt wird?

              Das ersetzen aller "\n" durch "<br>" bringt auch nichts.
              PHP-Code:
              $row['inhalt'] = str_replace('\n''<br>'$row['inhalt']); 
              Der Spaltentyp der Nachricht ist übrigens Text und im Anhang ist ein Bild!

              Danke an alle, die sich diesen Roman durch gelesen haben, ob es meinem Problem hilft oder nicht!

              edit:
              PHP-Version ist 4.4.1
              Angehängte Dateien
              Zuletzt geändert von Sunset02; 07.01.2006, 18:48.

              Kommentar


              • #8
                dann zeig doch bitte noch den generierten HTML-Quelltext.

                wird das zitat auch noch zwischen <pre> und </pre> angezeigt, oder danach?

                Kommentar


                • #9
                  Original geschrieben von TobiaZ
                  wird das zitat auch noch zwischen <pre> und </pre> angezeigt, oder danach?
                  Hm, ist das nicht relativ egal, da das Zitat in einer eigenen Tabelle steht?
                  Wenn, dann müsste dort noch ein zweiter pre-Tag rein, würde ich meinen.
                  mfg - sagg

                  Kommentar


                  • #10
                    bin mir nicht sicher, wie tolerant die browser da sind und was gültig ist.

                    Kommentar


                    • #11
                      Hi!

                      Das ist alles.
                      Ich hol mir die Nachricht aus der Datenbank und ersetze die Tags.
                      Nun werden noch die Links verändert, damit man bei langen Links nicht horizontal scrollen muss.
                      Danach kommen eventuell vorhandene Edit-Texte hinzu.
                      Am Ende erfolgt die Ausgabe!

                      PHP-Code:
                      $row['inhalt'] = str_replace('[q]''<table [...]'$row['inhalt']);
                      $row['inhalt'] = str_replace('[/q]''</td></tr></table>'$row['inhalt']);
                      $row['inhalt'] = $row['inhalt'].$row['edit'];

                      $einzelneWörter explode(" "$row['inhalt']);
                      foreach (
                      $einzelneWörter as $key => $aktWort
                      {
                              
                      $pos strpos($aktWort"http://");
                                      if(
                      $pos == && $pos !== false)
                                      {
                                       
                      $einzelneWörter[$key] = 
                                       
                      '<a href='.$einzelneWörter[$key].' target=blank>Link</a>';
                                      }
                                      
                      $pos strpos($aktWort"www.");
                                      if(
                      $pos == && $pos !== false)
                                      {
                                       
                      $einzelneWörter[$key] = 
                                       
                      '<a href=http://'.$einzelneWörter[$key].' target=blank>Link</a>';
                                      }
                      }
                      $row['inhalt'] = implode(" "$einzelneWörter);

                      echo 
                      "<div width=500><pre>$row[inhalt]</pre></div></td>"
                      Gruß

                      Kommentar


                      • #12
                        Hm, ist das nicht relativ egal, da das Zitat in einer eigenen Tabelle steht?
                        Wenn, dann müsste dort noch ein zweiter pre-Tag rein, würde ich meinen.


                        Das war das Problem!
                        Danke an alle für die Mühe!

                        Kommentar


                        • #13
                          Probier mal das mit dem zweiten pre-Tag aus, ich bin mir da zwar auch nicht sicher, dass es daran liegt, aber dann können wir das schonmal ausschließen.


                          *edit*
                          Gut, dann können wir uns jetzt sicher sein und haben auch noch was dazu gelernt.
                          mfg - sagg

                          Kommentar


                          • #14
                            Und das nächste mal, lernen wir dann noch, was ein HTML-Quelltext ist, gell?

                            Kommentar

                            Lädt...
                            X