簡體   English   中英

如何將用戶輸入換行符保存到數據庫。 (jQuery / php / mysql)

[英]How to save user input linebreak to database. (jQuery/php/mysql)

問題是: 如何將用戶輸入換行符保存到數據庫。 (jQuery / php / mysql)

我有一個可由用戶編輯的段落。

<p contenteditable="true" id="forbiddenField">Text</p>

當我以此從數據庫中檢索數據時:

<p contenteditable="true" id="forbiddenField"><?php echo nl2br($forbidden); ?></p>

而且效果很好。

onblur(.blur)將激活一個jQuery腳本,該腳本會將新編輯的數據發送到數據庫。

$("#forbiddenField").blur(function(){
        var whatIsNowForbidden = encodeURI($("#forbiddenField").text());

        $.ajax({
            type: "POST",  
            url: "updateForbidden.php",  
            data: "forbiddenStuff="+ whatIsNowForbidden,
            success: function(){
            }  
        });
});

問題:如果用戶插入帶有換行符的新數據,則該換行符不會添加到數據庫中的數據中,而只會添加內容。

我在其他方面進行了嘗試:var whatIsNowForbidden = encodeURI($(“#forbiddenField”)。text());

我在這些地方找到了答案:將Textarea中的新行轉換為<br/> http://www.w3schools.com/tags/ref_urlencode.asp 替換換行符UTF-8安全嗎? 如何轉義輸入但不轉義保存到數據庫中 如何識別每個換行符?

我無法正常工作。 非常感謝所有輸入和提示!

嘗試從您的JavaScript中刪除encodeURI()函數,如下所示:

var whatIsNowForbidden = $("#forbiddenField").text();

我做了一個小提琴來測試這一點,而javascript的encodeURI()函數似乎並沒有像我們期望的那樣將段落中的新行轉換為%0A

通過刪除函數encodeURI() PHP應該能夠將文本(包括新行)保存到數據庫中。 然后,PHP的nl2br()應該nl2br()將新行轉換為<br />標記。

小提琴可在這里找到: http : //jsfiddle.net/LN7QC/

最終答案:使用<textarea>

jQuery:

$("#forbiddenField").blur(function(){
        var whatIsNowForbidden = $("#forbiddenField").val();

        $.ajax({
            type: "POST",  
            url: "updateForbidden.php",  
            data: "forbiddenStuff="+ whatIsNowForbidden,
            success: function(){
            }  
        });
});

添加到數據庫:

<?php
    include('connect.php');

            if($_POST['forbiddenStuff']){
                $forbiddenInput = $_POST['forbiddenStuff'];
            }


    If($forbiddenInput){
        mysql_query("SET NAMES 'utf8'");
        $changeDataInDB = "UPDATE heroes_and_helpers SET forbidden='$forbiddenInput' WHERE name ='sabina'";
        mysql_query($changeDataInDB);

    }
?>

從數據庫中獲取:

   mysql_query("SET NAMES 'utf8'");
    $fetchForbidden = mysql_query("SELECT * FROM heroes_and_helpers WHERE name='sabina'");

        if (!$fetchForbidden)
          {
          die('Ngt ar fel: ' . mysql_error());
          }

    $whatIsForbidden = mysql_fetch_array($fetchForbidden); 
    $forbidden = $whatIsForbidden['forbidden'];

在網站上:

<textarea id="forbiddenField" style="width: 450px; height: 500px;"><?php echo $forbidden; ?></textarea>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM