Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

gelöst Nl2br() soll nur einmal umwandeln

Mitglied: ChristophD

ChristophD (Level 1) - Jetzt verbinden

16.07.2011 um 07:04 Uhr, 4005 Aufrufe, 3 Kommentare

Viele kennen vermutlich das Problem beim speichern eines Datensatzes via Eingabeformular (z.B. bei einem Gästebuch) - Wenn man Absätze machen möchte drückt man ENTER, was dann als /n erkannt wird und nicht als <br> was dazu führt das der Datensatz als WURST ohne Absätze ausgegeben wird. NL2BR ermöglicht diese Absätze, aber es gibt ein Problem damit....

Ich habe ein Formular und speicherre die Daten in eine Datenbank

Der Code funktioniert einwandfrei, und sieht so aus: (das ist der Teil der mein Problem betrifft - STARK VEREINFACHT natürlich um es leichter zu veranschaulichen)

....
$Value=nl2br($_POST['BLA']);
INSERT INTO DATENBANK (Inhalt_aus_der_DB) VALUES('$Value');
....
<textarea> $Inhalt_aus_der_DB </textarea>
......


Hoffe das ist verständlich.... :/

Folgendes passiert:
Eine Admin-Seite öffnet ein Textfeld worin der zuvor gespeicherte Inhalt eingelesen wird und direkt bearbeitet werden kann. Das Problem dabei ist jetzt aber:

Wenn ich Änderungen vornehme und die Daten via REPLACE INTO Anweisung überschreibe, erhalte ich weiterhin bei jedem Zeilenumbruch der durch /n erzeugt wurde ein zusätzliches <br/>... und genau das ist schlecht da ich nach 5-maliger Änderung des Datensatzes statt nur einem <br> plötzlich 6 <br> in der Ausgabe habe... Das Layout ist damit zerstört.


Hat jemand vl. die Lösung dazu ?
Mitglied: Arano
16.07.2011 um 12:19 Uhr
Hallo Christpoh.

Hehe, ist doch faszinierend wie das alles funktioniert oder !?

Wie du ja schon richtig erkannt hast, haben wir einmal das Steuerzeichen \n und einmal das HTML-Tag <br>.
\n ist das "System-Umbruch-Zeichen" (\r\n= Windows, \n=Linux und \r=Mac) (\n=New line, \r= cariage Return)
<br> das in HTML.

Im HTML-Quelltext haben wir das "Problem", das ein Zeilenumbruch (\n) sehr oft vorkommt z.B hinter den meisten HTML-Tags zur Strukturierung des Quelltextes, aber natürlich auch in den Texten selber.
Welcher dieser Zeilenumbrüche soll den nun angezeigt werden und welche nicht !?
Darum gibt es das HTML-Tag <br>, welches einen __visuellen Zeilenumbruch__ erzeugt. Sprich, der Browser zeigt dir den Text umgebrochen an, im Quelltext steht er aber in einer Zeile.

Die Eingaben in Input-Feldern kommen vom System, also wird der Zeilenumbruch durch (\n) dargestellt.
Damit man aber mehrzeilige Textareas mit einem Text (strukturiert) vor belegen kann z.B. mit einem Gästebucheintrag, __kann__ man hier die br-Tags verwenden - sollte man aber nicht.

Dein Problem entsteht in dem Moment in dem das Formular abgeschickt wird. Den nun sendet der Browser/das System die Eingabe, mit Zeilenumbrüchen (\n) und br-Tags an den Server und schon hast du dein Problem mit den zuerst doppelten br-Tags und dann dreifach, vierfach,...

Speichere den Text so wie er ist in die Datenbank, also mit \n und wandele sie erst bei der Ausgabe auf der Seite mit nl2br() zu <br> um.
Auf der "Adminseite" lässt du den Eintrag natürlich so wie er ist damit in der Textarea keine br-Tags stehen sondern nur \n

Tja, du siehst, kein Fehler von nl2br() nur ein Anwendungsfehler


Ein schönes Wochenende noch
~Arano
Bitte warten ..
Mitglied: EvilMoe
16.07.2011 um 13:36 Uhr
Arano hat vollkommen recht.

Ein andere Lösungsansatz ohne nl2br wäre indem du mit CSS arbeitest.

01.
<div style="white-space: pre;"> 
02.
Mein 
03.
Text 
04.
</div>
So haste ohne deine nl2br auch einen visuellen Umbruch.


PS: Soll HTML im Code erlaubt sein? Kann ich nicht entnehmen und würde mich damit noch befassen und ggf. filtern.
Bitte warten ..
Mitglied: ChristophD
16.07.2011 um 15:40 Uhr
Hallo. Danke vielmals für die rasche Hilfe. Euch auch ein schönes WE.

Arano: Ich glaube eine bessere Erklärung kann man sich garnicht wünschen

EvilMoe: HTML habe ich mit htmlenities() unterbunden, soll also keinesfalls im öffentlichen Bereich erlaubt sein. Hinzufügen möchte ich später aber noch die Möglichkeiten via Schaltfläche Text zu zentrieren, Links einzutragen etc und ein Bild hochzuladen.... Darüber habe ich mir aber noch nicht weiter den Kopf zerbrochen, da diese Implementationen für Version 1.0 der HP einfach noch zu weitläufig sind. Ich bin mir jetzt aber etwas unsicher ob htmlenities() ausreicht weil du die Thematik extra noch angesprochen hast xD.... genügt doch oder ?
Bitte warten ..
Ähnliche Inhalte
Soziale Netzwerke
Facebook profil umwandeln in seite
gelöst Frage von jensgebkenSoziale Netzwerke13 Kommentare

hallo gemeinschaft, bei der umwandlung zu einer seite - gehen dort eigentlich alle bisherigen beiträge und alle freunde verloren? ...

Batch & Shell
CSV mit Powershell umwandeln
gelöst Frage von mayli01Batch & Shell3 Kommentare

Hallo, in einer spalte einer CSV Datei habe ich zahlen von 0-100. Die spalte enthält eine Kopfzeile (Stk.). Nun ...

VB for Applications
Makros in Funktionen umwandeln
Frage von 123660VB for Applications7 Kommentare

Guten Tag und frohes Neues Jahr, ich suche Hilfe bei der Thema Makros umwandeln ? ich arbeite mit Excel ...

Batch & Shell
Buchstaben in Zahlen umwandeln
gelöst Frage von KawoosheBatch & Shell8 Kommentare

Hallo, ich wollte mal fragen ob man Buchstaben (groß und klein schreibung egal) in ihre dazugehörige zahl umwandeln kann( ...

Neue Wissensbeiträge
Humor (lol)
IoT-Gefahr: Smartes Aquarium leckt!
Information von Lochkartenstanzer vor 1 TagHumor (lol)3 Kommentare

Moin, Die IoT-Manie hat weitere Opfer gefunden. Ein Casino-Leck durch ein smartes Aquarium: Allerdings haben sie kein Wasser, sondern ...

Router & Routing

Alte Fritzbox 7270 mit VPN und SIP-Telefonie hinter O2 Homebox 6641 als "Modem"

Erfahrungsbericht von the-buccaneer vor 1 TagRouter & Routing3 Kommentare

Nun war es soweit: Auch O2 hat mich mit VOIP zwangsbeglückt. Heute am Privatanschluss, in 2 Wochen ist das ...

Sicherheit

Ungepatchte Remote Code Execution-Lücke in LG NAS

Information von kgborn vor 2 TagenSicherheit

Nutzt wer LG NAS-Einheiten? In den NAS-Einheiten der LG Network Storage-Einheiten gibt es eine sehr unschöne Schwachstelle, die einen ...

Windows Update

Neue Version KB4099950 NIC Einstellungen gehen verloren

Information von sabines vor 2 TagenWindows Update2 Kommentare

Es ist eine neue Version des KB4099950 verfügbar, die das Problem mit den verlorenen Netzwerkeinstellungen lösen soll. Das Datum ...

Heiß diskutierte Inhalte
Router & Routing
Mikrotik: Routing zwischen Interfaces mit Geräten ohne Gateway
Frage von TonLichtVideoRouter & Routing20 Kommentare

Hallo zusammen, ich komme aus dem Veranstaltungstechnik Bereich und habe zwei Netze um verschiedene Hardware zu Remoten. CONTROL1 192.168.1.0/24 ...

Linux Netzwerk
Raspberry Pi 3: WLAN Power save deaktivieren
Frage von nordie92Linux Netzwerk14 Kommentare

Moin moin, mein Raspberry Pi 3 Model B benötigt eine dauerhaft aktive WLAN-Verbindung. Leider bricht die WLAN-Verbindung nach einigen ...

Vmware
Server 2008 r2 vmware terminalserver
Frage von MasterCVmware11 Kommentare

Guten Abend zusammen, ich hoffe , dass einer von euch mir weiterhelfen kann ,bei meinem kack Problem ! Ist ...

Netzwerkmanagement
Netzwerkmanagment im Haus mit Switch, Panel und pfsense
gelöst Frage von CorraggiounoNetzwerkmanagement10 Kommentare

hi zusammen, wir sind gerade dabei das ganze Haus bzw. die einzelnen Zimmer mit netzwerkdosen zu versorgen. Vom Keller ...