【问题标题】:Is there a way to fill a textarea form with SQL data that contain linebreak from ENTER key?有没有办法用包含 ENTER 键换行符的 SQL 数据填充 textarea 表单?
【发布时间】:2014-01-01 13:08:20
【问题描述】:

我在 PHP/Jquery 中遇到问题。

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

问题:当 textarea 中的文本从 enter 键(而不是 wordwrap)换行时,当我从保存访问页面时,文本不想填充任何文本表单和 textarea按钮或只是从其他页面。因此,当我重新加载页面时,表单中的文本突然消失了。但是当我与我的管理员一起检查 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 php jquery html forms


    【解决方案1】:

    问题在于 JavaScript 不“喜欢”换行符。

    var foo = "hello world";
    

    不过会正常工作

    var foo = "hello
               world";
    

    不会,您会在开发者控制台中收到错误消息,例如

    Uncaught SyntaxError: Unexpected token ILLEGAL

    nl2br 将添加正确的&lt;br&gt;,但会留下换行符,因此您的 JavaScript 无效。

    由于您现在没有使用 AJAX,所以将内容直接写入 textarea 有什么问题?

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

    如果由于某种原因无法解决,请查看有关 Removing line breaks from string 的其他问题。应用这样的解决方案后,您的 JavaScript 应该再次有效。

    【讨论】:

    • 哦是的...我忘记了我们可以这样做...专注于 Jquery 而忘记了形式。谢谢你,你真的让我很开心
    猜你喜欢
    • 2013-08-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-19
    • 2020-12-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多