The code you show has no obvious faults. The fact that it works in an INPUT type=“text” is mysterious.
Some things to rule out:
Are you sure you have a terminating tag?
The only thing that could be different about the TEXTAREA is that the data might contain a new-line character (or two) that is messing you up somehow. Try using the TRIM() function on your data before displaying it.
In general, in the VALUE attribute of an INPUT field, you should use the STRIPSLASHES() function on the data, because when the data is posted to a form, single quotes are automatically escaped (i.e. ’ becomes '). (This is because the configuration switch “magic_quotes_gpc” is on.) This is good for data being posted to MySQL, but you have to take the quotes out before displaying them in a form.
So, try a tag that looks like this and see if it makes any difference:
<TEXTAREA NAME=“content” …><?php echo STRIPSLASHES(TRIM($content))?>
Finally on this subject, there’s a shorthand for <?php echo $variable ?>. You can do this: <?= $variable ?>.
On the date questions, you can do all the formatting you need as the data comes out of the database. See the MySQL DATE_FORMAT function. Your SELECT statement might look like:
SELECT *, DATE_FORMAT(date_created, ‘%e/%c/%y’) AS date_short
Then, you can refer to the preformatted date in PHP code as if there was a field in the database called ‘date_short’.
Failing that, see the PHP date() function.