问题是:
如何将用户输入的换行符保存到数据库。(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($(“35; forbiddenField”).text());
我在这些地方寻找答案:
New Line in Textarea to be converted to <br/>
http://www.w3schools.com/tags/ref_urlencode.asp
Is replacing a line break UTF-8 safe?
how to escape input but save unescaped into the database
How to recognize every linebreak?
我不能让它工作。
非常感谢所有的输入和提示!

最佳答案

尝试从javascript中删除encodeURI()函数,如下所示:

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

我做了一个测试,javascript的encodeURI()函数似乎没有像我们期望的那样将段落中的新行转换成%0A
通过删除encodeURI()函数,PHP应该能够将文本(包括新行)保存到数据库中。然后,PHP的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>

关于php - 如何将用户输入换行符保存到数据库。 (jQuery/php/mysql),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8675063/

10-11 02:52
查看更多