Ankündigung

Einklappen
Keine Ankündigung bisher.

Textfelder mit Zeilenumbrüchen in MySQL Datenbank übertragen und wieder Laden

Einklappen

Neue Werbung 2019

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

  • Textfelder mit Zeilenumbrüchen in MySQL Datenbank übertragen und wieder Laden

    Hallo,
    ich stehe gerade vor einem kleinen Grundsatz Problem bei dem ich nicht so recht weiter komme, da ich nicht so recht weiß wo das Problem ist

    Ich habe ein Formular mit einer Textarea also mehrzeiliger Text
    diesen übertrage ich in eine MySQL Datenbank
    und gebe ihn irgendwann wieder aus

    Funktioniert auch, nur irgendwo auf dem weg verschwinden die Zeilenumbrüche und mir ist nicht ganz klar wo und wie
    Das Formular Ruft sich selber auf und übergibt die Daten per POST, von dort aus geht es über einen API Call in die DB
    habt ihr ne idee wo ich den Fehler suchen kann ?
    oder gibt es ein gutes TUT das sich mit dem Thema beschäftigt?

    danke schon einmal im voraus

  • #2
    nur irgendwo auf dem weg verschwinden die Zeilenumbrüche
    auf welchem Weg? Dir ist bewußt, daß HTML Zeilenumbrüche ignoriert (außer in input/textarea/pre)?

    Kommentar


    • #3
      Daher gibt es ja auch die nützliche Funktion nl2br.

      Und ohne Code können wir dir auch nicht sagen wo, wenn überhaupt, was verloren geht.

      Ansonsten musst du halt auf Fehlersuche gehen.

      Kommentar


      • #4
        Zeilenumbruch in TEXTAREA wird als \n ODER <br /> gespeichert / zur Ausgabe braucht man dann aber nl2br($string)

        Kommentar


        • #5
          Also das Problem scheint, entweder beim speichern in der DB oder beim Laden aus ihr zu entstehen, wenn ich das nl2br bei der ausgabe verwende, ändert sich nichts,
          wenn ich es beim Speichern verwende bekomme ich die <br>'s allerdings wird es dan beim laden Maskiert so das die <br>'s im text auftauchen

          Sieht dan so aus wenn ich mir den Quelltext der Seite anzeigen lasse:
          Code:
          1&lt;br&gt;2&lt;br&gt;3&lt;br&gt;4&lt;br&gt;5&lt;br&gt;6&lt;br&gt;7
          kann es ggf. daran liegen das das feld in der DB ein VARCHAR(204 ist und kein blob?

          Kommentar


          • #6
            kann es ggf. daran liegen das das feld in der DB ein VARCHAR ist und kein blob?
            Nein, das liegt daran dass du htmlspecialchars() oder htmlentities() benutzt, wo sie nix zu suchen haben.

            Kommentar


            • #7
              Zitat von husker Beitrag anzeigen
              Also das Problem scheint, entweder beim speichern in der DB oder beim Laden aus ihr zu entstehen, wenn ich das nl2br bei der ausgabe verwende, ändert sich nichts,
              wenn ich es beim Speichern verwende bekomme ich die <br>'s allerdings wird es dan beim laden Maskiert so das die <br>'s im text auftauchen

              Sieht dan so aus wenn ich mir den Quelltext der Seite anzeigen lasse:
              Code:
              1&lt;br&gt;2&lt;br&gt;3&lt;br&gt;4&lt;br&gt;5&lt;br&gt;6&lt;br&gt;7
              kann es ggf. daran liegen das das feld in der DB ein VARCHAR(204 ist und kein blob?
              Dann lass uns nicht weiter spekulieren und zeig uns Deinen CODE.
              Dann können wir gemeinsam schauen woran es liegt....

              Kommentar


              • #8
                Zitat von Dormilich Beitrag anzeigen
                Nein, das liegt daran dass du htmlspecialchars() oder htmlentities() benutzt, wo sie nix zu suchen haben.
                jo du hast recht:
                das hier aber ich in der API.php gefunden(die ist aber nicht von mir)
                Code:
                {
                    foreach ($_REQUEST as $key=>$r) {
                        if ($key <> 'img')
                        $_REQUEST[$key] = htmlentities(preg_replace('/(\n|\r)/','',$r));
                    }
                ich versuche gerade mal rauszufinden was das soll

                Kommentar


                • #9
                  Das ist aber schöner Mist. Superglobale wie _REQUEST überschreibt man nicht und dann gleich noch mit der Keule komplett auf _REQUEST. Weißt du was alles in $_REQUEST ist? _GET, _POST, _COOKIE.

                  Und drittens ist htmlspecialchars() nur sinnvoll im Kontextwechsel zu HTML .. hin.. Nicht wenn man solche Daten dann so in die DB schreibt. Dann kommt nämlich genau so ein Mist raus.

                  Escapen muss man immer zur richten Zeit bzw./also für den richtigen Kontext. Und "in die DB schreiben" ist etwas ganz anders als "zu HTML" ausgeben.

                  Weiters entfernt der absichtlich Zeilenumbrüche - also ersetzt diese zu '' einem Leerstring.

                  Kommentiere die Zeile aus und escape je nach Kontext korrekt. Dann müsst das grundsätzlich passen.
                  The string "()()" is not palindrom but the String "())(" is.

                  Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
                  PHP.de Wissenssammlung | Kein Support per PN

                  Kommentar


                  • #10
                    Zitat von hausl Beitrag anzeigen
                    Das ist aber schöner Mist. Superglobale wie _REQUEST überschreiben und dann gleich mit der Keule gleich komplett auf _REQUEST (weißt du was alles in $_REQUEST ist? GET, POST, COOKIE).

                    Und drittens ist htmlspecialchars() nur sinnvoll im Kontextwechsel zu HTML .. hin.. Nicht wenn man solche Daten dann so in die DB schreibt. Dann kommt nämlich genau so ein Mist raus.

                    Escapen muss man immer zur richten Zeit bzw./also für den richtigen Kontext. Und "in die DB schreiben" ist etwas ganz anders als "zu HTML" ausgeben.

                    Weiters entfernt der absichtlich Zeilenumbrüche - also ersetzt diese zu '' einem Leerstring.

                    Kommentiere die Zeile aus und escape je nach Kontext korrekt. Dann müsst das grundsätzlich passen.
                    ja wie gesagt dieser teil des codes stammt nicht von mir, ich weiss auch ehrlich aktuell nicht was passiert wenn ich das einfach rausnehme, auch wenn es ne schlechte idee war wird er sicher seinen Grund gehabt haben
                    nicht das der rest den nicht mehr geht habe ihm aber ne mail geschrieben und gefragt was er sich dabei gedacht hat ...
                    Aber erstmal danke Jungs und Mädels euer Richer war super
                    ohne euch hätte ich mich dämlich gesucht

                    Kommentar

                    Lädt...
                    X