Seite 1 von 2 12 Letzte
  1. #1
    Avatar von ZarneXxX
    Registriert seit
    05.04.2012
    Beiträge
    934
    Thanked 1.291 Times in 258 Posts

    Unglücklich Zeilenumbruch funktioniert nicht :/

    Hallo zusammen,
    ich versuche es ganze zeit nur ich kriege es nicht hin.
    Bei dem Privat Message System funktioniert kein Zeilenbruch.
    Die ausgabe sieht ca. so aus:
    Zeile1<br>Zeile2<br>Zeile3
    Und im Quellcode sieht es so aus:
    Zeile1&lt;br&gt;Zeile2&lt;br&gt;Zeile3

    Das Hauptsächliche ist ja das:
    $text = preg_replace('/\r\n|\r/', "<br>", html_entity_decode($_POST["nachricht"]));

    Hier:
    <textarea name="nachricht" id="textarea"><?php
    $a = str_replace("<br />", " ", $text);
    echo $a; ?></textarea>


    Hier ist mein Code:
    PHP-Code:
    <?php
    if(isset($_GET["post"])) {
    if(
    $_GET["post"]=="new") {
    ?>
    <h1>Neue Nachricht</h1>
    <div id="news" style="">
        <p>
            <form action="index_private.php" method="POST">
                <a href="index_private.php?post=new" style="font-size: 150%;color:grey;border:1px solid grey;background:#F2F2F2;padding-left:15px;padding-right:15px;">Neue Nachricht</a>
                <a href="index_private.php" style="font-size: 150%;color:grey;border:1px solid grey;background:#F2F2F2;padding-left:15px;padding-right:15px;">Back</a>
            </form>
        </p>
    </div>
    <?php
    if(isset($_POST["back"])) {
        echo 
    '<meta http-equiv="refresh" content="0; URL=index_private.php">';
    }
    if(isset(
    $_GET["to"])) {
        
    $to $_GET["to"];
    } else 
    $to "";
    if(isset(
    $_GET["betreff"])) {
        
    $betreff $_GET["betreff"];
    } else 
    $betreff "";
    ?>
    <div id="news">
                            <form action="index_private.php?post=new" method="POST">
                            <p id="inputtexttitel">An</p>
                            <input type="text" id="inputtext" value="<?php echo $to?>" name="to">
                            <p id="inputtexttitel">Betreff</p>
                            <input type="text" id="inputtext" value="<?php echo $betreff?>" name="betreff"><br>
                            <p id="inputtexttitel" >Nachricht</p>
                            <textarea name="nachricht" id="textarea"><?php
    $a 
    str_replace("<br />"" "$text);
    echo 
    $a?></textarea><br>
                            <input type="submit" value="Senden" name="sendengo" id="buttons">
                        </form>
    </div>


                        <?php
                        
    if(isset($_POST["sendengo"])){
                            
    $to $_POST["to"];
                            
    $betreff $_POST["betreff"];
                            
    $text preg_replace('/\r\n|\r/'"<br>"html_entity_decode($_POST["nachricht"]));
                            
    $db = new Database();
                            
    $db2 = new Database();
                            
    $db2->query("SELECT * FROM users WHERE username='".htmlentities(trim(stripslashes(mysql_real_escape_string($to))))."'");
                                foreach(
    $db2->rows() as $row) {
                                    
    $zu $row["id"];
                                }
                                if(
    $zu!="") {
                                
    $datum date("d.m.Y");
                                
    $db->InsertInto("INSERT INTO `post` (`post_id`, `from`, `to`, `betreff`, `text`, `datum`) VALUES 
                                ('','"
    $username ."','".$to."','".htmlentities(trim(stripslashes(mysql_real_escape_string($betreff))))."','".htmlentities(trim(stripslashes(mysql_real_escape_string($text))))."','".$datum."')");
                                echo 
    "<script>alert('Message Gesendet!');</script>";
                            } else echo 
    "<script>alert('Dieser User existiert nicht!');</script>";
                        } 
    //Button nicht gedrückt
    } elseif($_GET["post"]=="ges") {
    ?>
    <h1>Gesendete</h1>
    <div id="news" style="">
        <p>
            <form action="index_private.php" method="POST">
                <a href="index_private.php?post=new" style="font-size: 150%;color:grey;border:1px solid grey;background:#F2F2F2;padding-left:15px;padding-right:15px;">Neue Nachricht</a>
            </form>
        </p>
    </div>
    <?php
    if(isset($_POST["newmsg"])) {
        echo 
    '<meta http-equiv="refresh" content="0; URL=index_private.php?post=new">';
    }
    if(isset(
    $_POST["ges"])) {
        echo 
    '<meta http-equiv="refresh" content="0; URL=index_private.php?post=ges">';
    }
    ?>
    <div id="news">
        <table style="font-size:140%;">
                                <tr>
                                    <td style="font-size:100%;width:200px;"><h2>An</h2></td>
                                    <td style="font-size:100%;width:550px;"><h2>Betreff</h2></td>
                                    <td style="font-size:100%;"><h2>Datum</h2></td>
                                </tr>
                                <?php
                                $dbmsg 
    = new Database();
                                
    $dbmsg->query("SELECT * FROM `post` WHERE `from`='".$username."' ORDER BY `post_id` DESC");

                                foreach(
    $dbmsg->rows() as $row) {
                                    
    $active $row["active"];
                                    
                                    if(
    $active==0) {
                                    
    $blub1 "<b>";
                                    
    $blub2 "</b>";
                                    } else {
                                    
    $blub1 "";
                                    
    $blub2 "";
                                    }
                                    echo 
    "<tr><td>".$blub1.$row["to"].$blub2."</td>
                                    <td><a href='index_private.php?post="
    .$row["post_id"]."'>".$blub1.$row["betreff"].$blub2."</a></td>
                                    <td>"
    .$blub1.$row["datum"].$blub2."</td></tr>";
                                }
                                
    ?>
                            </table>
    </div>
            <?php                    
    } elseif($_GET["post"]!="") {


    $post_id $_GET["post"];
                        
    $asd = new Database();
                        
    $asd->query("SELECT * FROM `post` WHERE `post_id`='".$post_id."'");
                        if(
    $asd->numRows()!=0) {
                            foreach(
    $asd->rows() as $row) {
                                
    $to $row["to"];
                                
    $from $row["from"];
                                
    $betreff $row["betreff"];
                                
    $name $row["from"];
                                
    $text $row["text"];
                                
    $datum $row["datum"];
                                
    $active $row["active"];
                            }
                            if(
    $to==$username) {
                            
    ?>
                            <h1>Posteingang</h1>
    <div id="news" style="">
        <p>
            <form action="index_private.php?post=<?php echo $post_id?>" method="POST">
                <a href="index_private.php?post=new&to=<?php echo $from?>&betreff=RE:<?php echo $betreff?>" style="font-size: 150%;color:grey;border:1px solid grey;background:#F2F2F2;padding-left:15px;padding-right:15px;">Antworten</a>
                <input type="submit"  style="font-size: 150%;color:grey;border:1px solid grey;background:#F2F2F2;padding-left:15px;padding-right:15px;" value="L&ouml;schen" name="delmsg">
                <a href="index_private.php" style="font-size: 150%;color:grey;border:1px solid grey;background:#F2F2F2;padding-left:15px;padding-right:15px;">Back</a>
            </form>
        </p>
    </div>
    <?php
    if(isset($_POST["back"])) {
        echo 
    '<meta http-equiv="refresh" content="0; URL=index_private.php">';
    }
    if(isset(
    $_POST["delmsg"])) {
        
    $asd1 = new Database();
        
    $yey $asd1->InsertInto("DELETE FROM `post` WHERE `post_id`='".$post_id."'");
        if(
    $yey==true) {
        } echo 
    "<script>alert('Du hast diese nachricht geloescht!');return true;</script><meta http-equiv='refresh' content='0; URL=index_private.php'>";
    }
    if(isset(
    $_POST["newmsg"])) {
        echo 
    '<meta http-equiv="refresh" content="0; URL=index_private.php?post=new&to='.$from.'&betreff=RE:'.$betreff.'">';
    }
                            
                                
                                echo 
    "<div id='news'><h2>von<i> ".$from." </i>| am <i>".$datum."</i></h2><br>";
                                echo 
    '<form action="?post='.$post_id.'" method="POST">';
                                echo 
    "<div style='font-family:Comic Sans MS;font-size:120%;color:grey;'>".$text."</div></div>";
                                echo 
    "<br><br><br>";
                                
    //Update status
                                
    $dbuptodate = new Database();
                                
    $dbuptodate->InsertInto("UPDATE `post` SET `active`='1' WHERE `post_id`='".$post_id."'");
                                
                                
                            } elseif(
    $from==$username) { 
                            
    ?>
                                                    <h1>Posteingang</h1>
    <div id="news" style="">
        <p>
            <form action="index_private.php?post=<?php echo $post_id?>" method="POST">
                <a href="index_private.php?post=new&to=<?php echo $from ?>&betreff=RE:<?php echo $betreff?>" style="font-size: 150%;color:grey;border:1px solid grey;background:#F2F2F2;padding-left:15px;padding-right:15px;">Antworten</a>
                <a href="index_private.php" style="font-size: 150%;color:grey;border:1px solid grey;background:#F2F2F2;padding-left:15px;padding-right:15px;">Back</a>
            </form>
        </p>
    </div>
    <?php
    if(isset($_POST["back"])) {
        echo 
    '<meta http-equiv="refresh" content="0; URL=index_private.php">';
    }

    if(isset(
    $_POST["newmsg"])) {
        echo 
    '<meta http-equiv="refresh" content="0; URL=index_private.php?post=new&to='.$from.'&betreff=RE:'.$betreff.'">';
    }
                            
                                
                                echo 
    "<div id='news'><h2>An<i> ".$to." </i>| am <i>".$datum."</i></h2><br>";
                                echo 
    '<form action="?post='.$post_id.'" method="POST">';
                                echo 
    "<div style='font-family:Comic Sans MS;font-size:120%;color:grey;'>".$text."</div></div>";
                                echo 
    "<br><br><br>";
                                
    //Update status
                            
                            
                            
    } else echo "<script>alert('Du hast keine Rechte dies zusehen!');return true;</script><meta http-equiv='refresh' content='0; URL=index_private.php'>";
                        } else echo 
    "<script>alert('Diese Nachricht ist nicht verfuegbar!');return true;</script><meta http-equiv='refresh' content='0; URL=index_private.php'>";    

    } else echo 
    "fehler"

    //
    } else {
    ?>
    <h1>Posteingang</h1>
    <div id="news" style="">
        <p>
            <form action="index_private.php" method="POST">
                <a href="index_private.php?post=new" style="font-size: 150%;color:grey;border:1px solid grey;background:#F2F2F2;padding-left:15px;padding-right:15px;">Neue Nachricht</a>
                <a href="index_private.php?post=ges" style="font-size: 150%;color:grey;border:1px solid grey;background:#F2F2F2;padding-left:15px;padding-right:15px;">Gesendete</a>
            </form>
        </p>
    </div>
    <?php
    if(isset($_POST["newmsg"])) {
        echo 
    '<meta http-equiv="refresh" content="0; URL=index_private.php?post=new">';
    }
    if(isset(
    $_POST["ges"])) {
        echo 
    '<meta http-equiv="refresh" content="0; URL=index_private.php?post=ges">';
    }
    ?>
    <div id="news">
        <table style="font-size:140%;">
                                <tr>
                                    <td style="font-size:100%;width:200px;"><h2>Von</h2></td>
                                    <td style="font-size:100%;width:550px;"><h2>Betreff</h2></td>
                                    <td style="font-size:100%;"><h2>Datum</h2></td>
                                </tr>
                                <?php
                                $dbmsg 
    = new Database();
                                
    $dbmsg->query("SELECT * FROM `post` WHERE `to`='".$username."' ORDER BY `post_id` DESC");

                                foreach(
    $dbmsg->rows() as $row) {
                                    
    $active $row["active"];
                                    
                                    if(
    $active==0) {
                                    
    $blub1 "<b>";
                                    
    $blub2 "</b>";
                                    } else {
                                    
    $blub1 "";
                                    
    $blub2 "";
                                    }
                                    echo 
    "<tr><td>".$blub1.$row["from"].$blub2."</td>
                                    <td><a href='index_private.php?post="
    .$row["post_id"]."'>".$blub1.$row["betreff"].$blub2."</a></td>
                                    <td>"
    .$blub1.$row["datum"].$blub2."</td></tr>";
                                }
                                
    ?>
                            </table>
    </div>
    <?php
    }
    ?>
    Gruß, ZarneXxX

  2. #2
    Avatar von Devon
    Registriert seit
    18.11.2011
    Beiträge
    2.188
    Thanked 1.574 Times in 1.023 Posts

    Standard AW: Zeilenbruch funktioniert nicht :/

    Versuch es mal mit

    PHP-Code:
    \
    damit wird nämlich in PHP eine neue Zeile erzeugt.

  3. #3
    Avatar von patlux
    Registriert seit
    26.10.2011
    Beiträge
    1.195
    Thanked 1.596 Times in 725 Posts
    Blog Entries
    2

    Standard AW: Zeilenbruch funktioniert nicht :/

    Versuch mal:

    Code:
    $text = preg_replace('/\r\n|\r/', "<br>", html_entity_decode($_POST["nachricht"]));
    ersetzen in

    Code:
    $text = html_entity_decode(preg_replace('/\r\n|\r/', "<br>", $_POST["nachricht"]));

    Bin mir grad nich 100% sicher. Zu warum und zu müde xD
    Geändert von patlux (20.06.2013 um 11:08 Uhr)

  4. #4
    Avatar von ZarneXxX
    Registriert seit
    05.04.2012
    Beiträge
    934
    Thanked 1.291 Times in 258 Posts

    Standard AW: Zeilenbruch funktioniert nicht :/

    Zitat Zitat von patlux Beitrag anzeigen
    Code:
    $text = html_entity_decode(preg_replace('/\r\n|\r/', "<br>", $_POST["nachricht"]));
    Ergebnis wie vorher.

    Zitat Zitat von Devon Beitrag anzeigen
    PHP-Code:
    \
    Da kommt einfach nur ein kleines N.
    Sofern ich das richtig gemacht habe:
    $text = preg_replace('/\r\n|\r/', " \n ", html_entity_decode($_POST["nachricht"]));

  5. #5

    Registriert seit
    17.12.2011
    Beiträge
    97
    Thanked 37 Times in 27 Posts

    Standard AW: Zeilenbruch funktioniert nicht :/

    preg_replace('/\r\n|\r/' . " \n",

    Warum denn ein Kommata das macht 0 Sinn? Und das Leerzeichen war auch unnötig hinter dem /n :-)
    Geändert von Integer (20.06.2013 um 14:30 Uhr)

  6. #6
    Avatar von DMW007
    Registriert seit
    15.11.2011
    Beiträge
    6.080
    Thanked 9.118 Times in 2.995 Posts
    Blog Entries
    5

    Standard AW: Zeilenbruch funktioniert nicht :/

    Zitat Zitat von Devon Beitrag anzeigen
    Versuch es mal mit

    PHP-Code:
    \
    damit wird nämlich in PHP eine neue Zeile erzeugt.
    Und was bringt ihm das in seiner HTML-Ausgabe? HTML interessieren Escapesequenzen nicht.

    Das Pattern ist unsinnig. Wenn du schon alle Plattformen abdecken willst musst du \r und \n sowohl getrennt als auch einzeln ersetzen. Linux verwendet i.d.R. nur \n, Windows \r\n und Mac OS \r. Man braucht für so Kleinigkeiten auch keine Regulären Ausdrücke, die Stringfunktionen reichen hier vollkommen aus:

    PHP-Code:
    $str str_replace(array("\r\n""\r""\n"), "<br>"$str); 
    Aber auch das ist nicht nötig, dafür gibts die PHP-Funktion nl2br($str). Die ist auch gleich plattformunabhängig und berüchsichtigt sowohl Windows, Linux als auch Mac OS.

    Btw:
    PHP-Code:
    $post_id $_GET["post"]; $asd = new Database(); 
    $asd->query("SELECT * FROM `post` WHERE `post_id`='".$post_id."'"); 
    Ich hoffe dir ist klar, dass die Abfrage so ziemlich die perfekte SQL-Injection ist.
    Generell solltest du an deinem Codingstyl arbeiten, da gibts einiges Optimierungspotenzial. Den Sinn einer Datenbank-Klasse scheinst du auch nicht so richtig verstanden haben, sonst würdest du nicht 10 Millionen Instanzen davon erstellen. Variablen 'blubb', 'asdf' oder sonst wie sinnlos zu benennen ist auch nicht gerade sinnvoll, das ist gift für die Übersicht. Spätestens sobald du mehr als eine Hand voll Codezeilen so schlampig geschrieben hast und dann einen Fehler finden willst bzw den Code in 2 Monaten mal anschaust wirst du das auch selbst merken. Es hat schon seinen Grund, weshalb man Variablennamen selbst wählen kann. Das gleiche gilt für mehrere ineinander verschachtelte If-Abfragen, dafür gibts logische Operatoren.
    Wenn das was größeres werden soll würde ich außerdem über ein Templatesystem und je nachdem was konkret umgesetzt werden soll ggf. auch gleich ein Framework nachdenken. Layout und Code sollte man soweit es geht trennen.


  7. The Following 4 Users Say Thank You to DMW007 For This Useful Post:

    Devon (21.06.2013), Sky.NET (20.06.2013), xOneDirectionx (21.06.2013)

  8. #7
    Avatar von ZarneXxX
    Registriert seit
    05.04.2012
    Beiträge
    934
    Thanked 1.291 Times in 258 Posts

    Standard AW: Zeilenumbruch funktioniert nicht :/

    Ich verstehe immer noch nicht ganz was ich machen soll :S

  9. #8

    Registriert seit
    18.03.2013
    Beiträge
    481
    Thanked 264 Times in 168 Posts

    Standard AW: Zeilenumbruch funktioniert nicht :/

    Einfach die Funktion nl2br(string); benutzen! Aber vernünftiger wäre es, wenn du den kompletten Source noch einmal neu schreiben würdest und dieses Mal nicht alles durcheinander und auch nicht so unübersichtlich programmieren würdest. Es hilft später auch dir, wenn du dein "Werk" mal erweitern willst. Vergiss die Kommentierung deines Quellcodes nicht.



    [www.piratenpartei.de]
    "Krieg ist Frieden; Freiheit ist Sklaverei; Unwissenheit ist Stärke"

  10. #9
    Avatar von ZarneXxX
    Registriert seit
    05.04.2012
    Beiträge
    934
    Thanked 1.291 Times in 258 Posts

    Cool AW: Zeilenumbruch funktioniert nicht :/

    Habs selbst raus bekommen:
    PHP-Code:
    $text preg_replace('/\r\n|\r/'" \n  "html_entity_decode($_POST["nachricht"])); 
    Ersetzten durch:
    PHP-Code:
    $text preg_replace('/\r\n|\r/'"<br>"html_entity_decode($_POST["nachricht"])); 
    Hier wurde \n durch <br> Ersetzt!

    und

    PHP-Code:
    ('','". $username ."','".$to."','".htmlentities(trim(stripslashes(mysql_real_escape_string($betreff))))."','".htmlentities(trim(stripslashes(mysql_real_escape_string($text))))."','".$datum."')"); 
    Ersetzten durch:
    PHP-Code:
    ('','". $username ."','".$to."','".htmlentities(trim(stripslashes(mysql_real_escape_string($betreff))))."','".html_entity_decode(trim(stripslashes(mysql_real_escape_string($text))))."','".$datum."')"); 
    Hier wurde .htmlentities durch .html_entity_decode ersetzt!

    Danke nochmals für eure Hilfe
    Geändert von ZarneXxX (22.06.2013 um 02:02 Uhr)

  11. #10
    Avatar von DMW007
    Registriert seit
    15.11.2011
    Beiträge
    6.080
    Thanked 9.118 Times in 2.995 Posts
    Blog Entries
    5

    Standard AW: Zeilenumbruch funktioniert nicht :/

    Ich empfehle dir dringend mehr an der Logik deines Codes zu arbeiten. Es macht Sinn zuerst darüber nachzudenken was der Code eigentlich tun muss. So was wie

    PHP-Code:
    $text preg_replace('/\r\n|\r/'" \n  "html_entity_decode($_POST["nachricht"])); 
    fällt dann nämlich schon mal weg, da das absolut keinen Sinn macht. Du willst Escapesequenzen für Zeilenumbrüche (\n, \r\n etc) in HTML umwandeln (<br>). Diese Zeile ersetzt \r\n und \n durch \n mit ein paar vor- und nachgestellten Leerzeichen. Spätestens jetzt sollte klar sein, dass dieser Code definitiv nicht das gewünschte tun kann. Das haben hier aber auch mit mir bereits 2 Leute gepostet.

    Bei solchen Konstrukten merkt man auch, dass du scheinbar selbst nicht so genau weißt was du da tust:

    PHP-Code:
    html_entity_decode(trim(stripslashes(mysql_real_escape_string($text)))) 
    stripslashes() ist da vollkommen unnötig, weil mysql_real_escape_string() das bereits erledigt. Mal ganz nebenbei gesagt würde ich das sowieso in die Datenbank-Klasse verlagern. Dann hast du keine 99 Funktionen die du verschachtelt ineinander aufrufst sondern ein einfaches $db->complete_clean($var) oder ähnlich. Außerdem bist du so flexibel und kannst problemlos irgendwann MySQL zb durch MySQLi austauschen, gerade bei den MySQL-Spezifischen Funktionen ist das interessant. Gerade das ist auf Dauer eh unumgänglich, da in Zukunft nur noch die MySQLi-Erweiterung von PHP supported wird.

    Was ich bezüglich deines Ansatzes mit dem letzten Post sagen wollte: Es gibt wie bereits gesagt die PHP-Funktion nl2br, die das macht was du willst, und zwar plattformunabhängig. Es macht wenig Sinn das Rad neu zu erfinden. Zumal wie bereits gesagt Regex für solche Kleinigkeiten wie mit Kanonen auf Spatzen schießen ist.


Seite 1 von 2 12 Letzte

Ähnliche Themen

  1. Funkmaus funktioniert nicht
    Von Runix im Forum Windows
    Antworten: 9
    Letzter Beitrag: 12.09.2013, 20:48
  2. Headset funktioniert nicht
    Von Manipulate im Forum Hardware
    Antworten: 3
    Letzter Beitrag: 01.08.2013, 14:53
  3. Schwimmtestprogramm funktioniert nicht !
    Von AlexEHM im Forum C++
    Antworten: 1
    Letzter Beitrag: 12.06.2012, 22:28
  4. Webcam funktioniert nicht
    Von kollos im Forum Hardware
    Antworten: 8
    Letzter Beitrag: 20.03.2012, 18:57
  5. Bluetooth funktioniert nicht
    Von Diestver im Forum Windows
    Antworten: 1
    Letzter Beitrag: 07.01.2012, 07:10
Diese Seite nutzt Cookies, um das Nutzererlebnis zu verbessern. Klicken Sie hier, um das Cookie-Tracking zu deaktivieren.