有没有一种方法可以用包含ENTER键换行符的SQL数据填充文本区域表单


Is there a way to fill a textarea form with SQL data that contain linebreak from ENTER key?

我在PHP/Jquery中遇到了一个问题。

我想要什么:我有一个PHP页面,我用它来更改我网站上的文章。该页面包含PHP中的文本和文本区域以及1个按钮。当我进入该页面时,该页面会自动从数据库中填充任何文本表单和文本区域。我用这个表格写了一些包含大约200-800个字符的文章。这篇文章包含一些使用Enter键的换行符。当我按下"我的保存"按钮时,文本区域和文本表单中的文本将存储在SQL数据库中,并使用VARCHAR/text类型替换OLD文章。我的保存按钮只是重新加载同一个页面,并使用PHP将文本保存在文本区域。我只是成功地动态地做到了这一点,所以当我按下保存按钮时,文本区域和任何其他形式的文本都不会变回旧文章。

问题:当文本区域中的文本从回车键换行(而不是换行)时,当我从保存按钮或仅从其他页面访问页面时,文本不想填充任何文本表单和文本区域。因此,当我重新加载页面时,我的文本形式突然消失了。但是,当我向我的管理员PHP检查时,SQL中的换行符也成功保存了文本。当我在没有换行的情况下写作时,这个问题就不会出现了。

这是处理保存和读取数据库的PHP代码。

$judul = $_POST['inputEditJudul'];
$jenis = $_POST['inputEditJenis'];                            
$isiArt = $_POST['inputEditIsi'];
date_default_timezone_set('Indonesia/Jakarta');
$tanggal  = date('Y-m-d');
if(isset($_POST['btn_Save'])) {
   $sql = "UPDATE artikel
           SET judul='".$judul."', jenis_artikel='".$jenis."', isi_artikel='".$isiArt."', tanggal= CAST('".$tanggal."'AS DATE)
       WHERE id=".$_GET['id'].";";
   mysql_query($sql,$link);
 }
$sql = "SELECT * FROM artikel WHERE id=".$_GET['id'].";";
$result = mysql_query($sql, $link);
$row = mysql_fetch_array($result);

这是处理在同一页面中填写表单的jquery脚本。

<script>
$(document).ready(function(){
   $("#inputEditJudul").val("<?php echo ($row['judul']) ?>");
   $("#inputEditIsi").val("<?php echo nl2br($row['isi_artikel']) ?>");
   var jenisArt = <?php echo $row['jenis_artikel'] ?>;
   if ( jenisArt == 1){
     $("#inputEditJenis").val("1");
   } else {
     $("#inputEditJenis").val("2");
   };
});
</script>

这是我表单中的文本区域

....    
<div class="form-group">
        <label for="inputEditIsi">Isi Artikel</label>
        <textarea class="form-control" id="inputEditIsi" name="inputEditIsi" rows="10" maxlength="800"></textarea>
    </div>
....

如果可能,请使用PHP/Jquery。我对ajax一无所知

抱歉我英语不好。我在这里还是个新手。

感谢

问题是JavaScript不"喜欢"换行。

var foo = "hello world";

可以正常工作,但是

var foo = "hello
           world";

不会,你会在开发者控制台中得到一个错误,比如

未捕获的SyntaxError:意外的令牌非法

nl2br将添加正确的<br>,但保留换行符,因此您的JavaScript无效。

由于您现在没有使用AJAX,将内容直接写入文本区域有什么问题?

<textarea class="form-control" id="inputEditIsi" name="inputEditIsi" rows="10" maxlength="800">
<?php echo $row['isi_artikel']; ?></textarea>

如果由于某种原因不能,请查看有关从字符串中删除换行符的其他问题。有了这样的解决方案,您的JavaScript应该再次有效。