2014-03-26 76 views
0

我有一個頁面,用戶在一天結束時添加他們的報告。他們點擊「添加報告」按鈕,然後顯示他們需要鍵入報告的textarea。他們進入並保存後,我將它發送到數據庫。但在寫入數據庫之前,我使用這個函數來轉義字符:在php中轉義字符,javascript

db::$conn->real_escape_string($str); 

並報告它保存成功。當我使用MySQL Workbench打開數據庫表時,我看到一行報告,如果它包含新行,它不會顯示,但是如果我將光標移到它上面,它會顯示工具提示,其中包含新行。

之後,我需要顯示報告表並啓用編輯。問題是,當我點擊編輯按鈕時,它應該顯示textarea和報告,但是我得到空的textarea。我發現它是關於轉義角色的問題。這是我如何呈現表格中的編輯按鈕。

$report = $row['user_report']; 
$report = str_replace('"', '\"', $report); 
$report = str_replace("'", "\'",$report); 
$report = htmlspecialchars($report, ENT_QUOTES); 
$r[] = '<a onclick="$(\'#editReport\').val(\''.$report.'\'); $(\'#editComment\').attr(\'onClick\', \'EditReport('.$row['id'].'); return;\');" class="btn-action glyphicons pencil btn-info" data-toggle="modal" data-target=".bs-modal-ld"><i></i></a>'; 

$ r []然後被緩存以輸出數據,但最主要的是這個javascript。問題是新的線路,我不知道如何逃脫它們。 這是它如何生成HTML頁面。只要提一下,如果報告沒有新行寫就可以正常工作。

<a onclick="$('#editReport').val('Fixed bugs on \&quot;User report\&quot; page. 
Developing Transaction page. 
Developing admin users page.'); $('#editComment').attr('onClick', 'EditReport(100); return;');" class="btn-action glyphicons pencil btn-info" data-toggle="modal" data-target=".bs-modal-ld"><i></i></a> 

而這裏的新行引起了問題。

,我輸入的報告是這樣的一個:

Fixed bugs on "User report" page. 
Developing Transaction page. 
Developing admin users page. 

但如果我喜歡這個輸入,它的工作原理:

Fixed bugs on "User report" page. Developing Transaction page. Developing admin users page. 

編輯: 我與另一str_replace函數固定它(「\ n 「,」\\ n「,$ report); 它現在的作品:D

回答

0

這很糟糕。考慮而不是使用JavaScript來發現內容並獲取其數據,而不是複製整個內容到一個內嵌的事件處理程序,因爲這是從來沒有去上班;)

+0

我想過這種方式,但我現在想這樣做,並將其作爲最後的手段:D – clzola

0

您應該使用json_encode功能

嘗試這種方式

$report = json_encode($row['user_report']); // no need str_replace 
+0

這也行不通。 – clzola