javascript - PHP mySQL textarea --- 整个shebang

标签 javascript php html mysql textarea

长期阅读者,第一次提问......我会开门见山。

我正在将文本区域数据传递给 QUERY_STRING,并需要它与 mySQL 配合良好。更具体地说,我需要文本显示正确的换行符和间距,同时显示所有字符(我正在看着你,#和 friend 们!)。另外,我需要它来转义所有讨厌的 ' 和 "字符。

我已经尝试了(几乎希望如此)一切。我似乎无法找到正确的成分;我可以使用空格和换行符,但不能使用 # 字符。我可以得到 # 字符,但不能得到撇号。

添加:我通过 QUERY 字符串而不是 GET 传递此数据的原因是因为我在后台使用 JavaScript(使用 XMLHttpRequest)将数据传递到 PHP 文件。

具体来说,该页面被设置为在不刷新页面的情况下发送消息(即 Facebook)。它通过 DOM 从 ID 文本区域获取数据,将其传递到一个单独的 PHP 文件,该文件处理 mySQL 请求,但在混合过程中,我丢失了信息并且它不会翻译。我已经为此工作了两天,但无法让它发挥作用。帮助!

编辑: 这是代码。其中一些代码片段位于不同的页面上,但可以一起尝试在不更新/刷新页面的情况下发送消息。

<textarea spellcheck='false' id='composeText' maxlength='250'>
</textarea>
<input type='button' value='Send' style='float:right;' onclick='sendMsg(<?php echo '123654674, 159753';?>)' id='sendMsg'>

parse_str($_SERVER['QUERY_STRING'],$g);
if ($g) {
    $msg_id = $g['msg_id'];
    $msgFrom = $g['msgFrom'];
    $message = addslashes($g['message']);
    $message = nl2br($message);
    $msgTo = $g['msgTo'];
}

echo "<input type='hidden' id='msgToId2' value='".$msgTo."'>"; 


addMsg($msg_id, $msgFrom, $msgTo, $message, $conn);


function sendMsg(msg_id, msgFrom) {
    msg_id = Math.floor((Math.random() * 1000000000) + 1);
    msgFrom = '159753'; 

    msgTo = document.getElementById('msgToId').value;
    if (msgTo == "") msgTo = document.getElementById('msgToId2').value;
    message = document.getElementById('composeText').value; 
    message = message.replace(/\r?\n/g, '<br/>');
    message = encodeURIComponent(message);

    getRequest(
           'sendMsg.php?msg_id=' + msg_id + '&msgFrom=' + msgFrom + '&msgTo=' + msgTo + '&message=' + message, // URL for the PHP file
           sendMsgOutput,  // handle successful request
           sendMsgError    // handle error
    );
    return false;
}


function addMsg($msg_id, $msgfrom, $msgto, $message, $conn) {

    $message = mysqli_real_escape_string($conn, $message);

    $query = "INSERT INTO `messages` (`msg_id`, `msgfrom`, `msgto`, `message`, `timestamp`) VALUES ('$msg_id', '$msgfrom', '$msgto', '$message', DATE_FORMAT(NOW(),'%b %d %Y %h:%i %p'))";
    $result = mysqli_query($conn, $query);
}

最佳答案

如果一切都失败了,我想我应该把它留在这里,你可以使用类似 TinyMCE 的东西我用过,效果相当不错。

使用

根据该网站的一个简单演示,

<!DOCTYPE html>
<html>
<head>
  <script src="//cdn.tinymce.com/4/tinymce.min.js"></script>
  <script>tinymce.init({ selector:'textarea' });</script>
</head>
<body>
  <textarea>Easy! You should check out MoxieManager!</textarea>
</body>
</html>

被所有额外的零碎信息压垮了?

无需担心,因为您可以删除它们并保留您想要的内容。下面是我使用的最小设置,它可以进一步减少。

tinymce.init({
    selector: '.tiny-mce',
    toolbar: 'bold italic alignleft aligncenter alignright bullist numlist outdent indent undo redo styleselect',
    statusbar: false,
    menubar: false
});

documentation也很简洁,这是一个优点。来自 editors appearancecontent filtering它有大量可以自定义的选项。

您可以找到完整的功能列表here .

关于javascript - PHP mySQL textarea --- 整个shebang,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38317846/

相关文章:

javascript - 我怎样才能加快我的正则表达式?

javascript - 无法从 Node js模块导出变量

php - 如何使用 preg_replace_callback?

html - 使用诸如 map 区域的坐标属性之类的东西将 div 放置在特定坐标处

html - 对于不同的计算机,网站在 IE9 上呈现不同

Javascript 循环、异步函数和 headless 浏览器

javascript - 如何使用 Reactjs 将对象数据渲染到表中

php - 不使用表单发送表单数据

php - 只为一个页面设置cookie,如果用户浏览其他页面,则不会发送回服务器

html - 对齐 Twitter、FB Share、LinkedIn 按钮