2011-05-02 2 views
4

내 사이트의 텍스트 영역에있는 텍스트를 MySQL 데이터베이스에 추가하려고합니다.서식을 잃지 않고 MySQL 데이터베이스에 텍스트 영역 삽입하기

다음은 텍스트를 데이터베이스에 추가하는 PHP 코드입니다.

if (isset($_POST['text'])) 
{ 
    $text = sanitizeString($_POST['text']); 
    $text = preg_replace('/\s\s+/', ' ', $text); 

    $query = "SELECT * FROM profiles WHERE user='$user'"; 
    if (mysql_num_rows(queryMysql($query))) 
    { 
     queryMysql("UPDATE profiles SET text='$text' where user='$user'"); 
    } 
    else 
    { 
     $query = "INSERT INTO profiles VALUES('$user', '$text')"; 
     queryMysql($query); 
    } 

} 
else 
{ 
    $query = "SELECT * FROM profiles WHERE user='$user'"; 
    $result = queryMysql($query); 

    if (mysql_num_rows($result)) 
    { 
     $row = mysql_fetch_row($result); 
     $text = stripslashes($row[1]); 
    } 
    else $text = ""; 
} 

$text = stripslashes(preg_replace('/\s\s+/', ' ', $text)); 

그리고 아래는 양식의 코드입니다.

<textarea name='text' cols='40' rows='3'>$text</textarea><br /> 

그러나 데이터가 입력되면 데이터베이스에 올바르게 표시되지만 올바르게 표시되지는 않습니다. 아래의 이미지를 참조하십시오 :

입력 텍스트

the text that is entered

텍스트는 페이지 텍스트에 어떻게

this is how the text is displayed

에 표시되는 방법 데이터베이스

this is the text in the database

이것은 페이지에 텍스트를 표시하는 PHP 코드입니다.

$result = queryMysql("SELECT * FROM profiles WHERE user='$user'"); 

    if (mysql_num_rows($result)) 
    { 
     $row = mysql_fetch_row($result); 
     echo stripslashes($row[1]) . "<br clear=left /><br /> 

희망 하시겠습니까?

편집 : 당신은 (여기에 유래에서와) 같은 마크 다운으로 서식있는 텍스트 편집기를 사용하지 않는 추가 여분의 PHP 코드

+0

사용할 수 있습니다. 그리고 "제대로 표시하지 않음"으로 정확히 무엇을 의미합니까? 올바른 공백이있는 두 개의 텍스트 영역이 나타납니다. 어떻게 그 텍스트를 표시합니까? –

+0

텍스트를 추가하는 전체 코드는 지금 위입니다. mysql_real_escape_string은 어디에 두어야합니까? –

+0

'stripslashes'? 왜 그게 필요하니? 그리고'sanitizeString'은 무엇을합니까? –

답변

8

당신의 텍스트가 아닌 내용으로, 당신의 CSS에 의해 스타일입니다 textarea 자체의

문제가 줄 바꾸기가 유지되면 데이터베이스에 저장하거나 데이터베이스에서 검색하기 전에 nl2br($text) 함수를 통해 문자열을 실행할 수 있습니다.

나는 검색이 더 좋을 것이라고 제안하지만 그건 단지 내 의견입니다. (그리고 나는 그것을 뒷받침 할 어떤 증거도 제공 할 수 없습니다).

+0

필자는 Ruby on Rails로 이전했지만 결과에 감사드립니다. –

+0

당신은 절대적으로 환영합니다! 동의 해 주셔서 감사 드리며, 귀하의 목적을 달성하게되어 기쁘게 생각합니다. –

4

또는 당신은 내가 그렇지 않으면 당신은 SQL 인젝션의 위험을 실행하고,`sanitizeString` 실제로`mysql_real_escape_string`를 실행 희망

echo nl2br($test); 
관련 문제