user5890151
user5890151

Reputation:

How do I echo line breaks from a MySQL database?

I have created a simple wall post feature, like on FaceBook.

A user writes a post, the post is submitted to the database and then echoed back onto the website; that all works.

The only issue is, when the text is echoed back onto the website the line break isn't. So, I typed:

"Hey this is a post.

Here is a new paragraph"

and it displayed as:

"Hey this is a post. Here is a new paragraph"

I've seen a few posts here saying to use the nl2br() function and input /n for a new line, however I really don't want my users to have to write '/n' everytime they want a new line, they should just have to press the enter key on the keyboard.

The line break is stored in the database, so I have no idea why it isn't echoed out. Can anyone help?

Not sure if the code will be necessary but I'll post it just in case.

while($wallposts = mysql_fetch_assoc($getwallposts)) {
    $postid = $wallposts['id'];
    $postedby_username = $wallposts['postedby'];
    $wallpostdate = $wallposts['dateposted'];
    $wallpost = $wallposts['post'];

    $querypostedby_info = mysql_query("SELECT * FROM `users` WHERE `username`='$postedby_username'");

    //get the info above
    if (mysql_num_rows($querypostedby_info)===1) {
        $getpostedby_info = mysql_fetch_assoc($querypostedby_info);

        $postedby_id = $getpostedby_info['id'];
        $postedby_profilepicture = $getpostedby_info['profilepicture'];
    }

    //display the posts
    $wallpoststicker = 
    "
    <div id='wallpost-container'>
        <div id='wallpost-header'>
            <img src='$postedby_profilepicture'><div id='wallpost-header-by'><a href='/profile.php?id=$postedby_id'>$postedby_username</a> said:</div>
            <div id='wallpost-date'>&bull; $wallpostdate</div> 
        </div>
        <div id='wallpost-content'>
            $wallpost
        </div>
    </div>
    ";
}

Upvotes: 2

Views: 3817

Answers (2)

Tom Chadaravicius
Tom Chadaravicius

Reputation: 393

PHP function nl2br converts newlines to "<br>" breaks.
So, $wallpost=nl2br($wallpost); should accomplish the task.

Upvotes: 5

geco17
geco17

Reputation: 5294

The answer(s) suggesting nl2br are great, I would go with that approach.

In your original question I think there is some confusion -- users don't type \n every time they want a new line. The slash is for escaping (special character, not a normal n).

On Windows machines, the Enter key is equivalent to \r\n where \r is carriage return and \n is new line. On Linux or similar, the Enter key is \n. \r's ascii value is 13 and \n's is 10.

So an EOL (End of Line) will either be \r\n or \n. Php has the nl2br function whose purpose is to replace all \r\n or \n with <br>, the html tag for a line break.

Upvotes: 1

Related Questions