如何在数据库中添加textarea中的数据而不刷新页面

时间:2016-08-02 23:45:47

标签: javascript php jquery html mysql

我正在开发一个登录和注册PHP,HTML,MySql等系统,所以,我的聊天有问题!

我想从textarea获取数据,如果单击该按钮,则清空textarea,并将文本发送到数据库而不刷新页面!我有一个系统刷新数据库中的数据并刷新index.php中的div“chat”。

帮助我!

3 个答案:

答案 0 :(得分:2)

您可以使用以下代码:

以下使用AJAX和PHP, 首先,对按钮执行一个功能,当按下发送按钮时,将执行AJAX功能:

function msgsend() 
{
 var msg = $("#message").val();
 if (msg!='')
  {
   $('#message').val("");
   $.post("msgsubmit.php", { msg: msg },  
   function(result)
   {  
    msgrecv();
   }); 
  }
}

然后检查是否收到新消息并填写消息字段:

function msgrecv(){
 $.post("msgchk.php",  {temp0 : 1},
 function(result){  
 var div = document.getElementById('convo');
 div.innerHTML = div.innerHTML + result;
 if (result)
  {
   var elem = document.getElementById('convo');
   elem.scrollTop = elem.scrollHeight;
  }
 }); 
}

所以,逻辑。每个用户都有一个lastid告诉消息用户最后看到的id,然后当用户将新消息添加到数据库时,调用AJAX函数并将消息提交给数据库并调用msgrecv ()函数以在对话框中获取消息的详细信息,请注意消息框在此处为空,另一方面,函数msgrecv()是否每10秒自动调用一次以检查新消息,在PHP代码中,我有一个用$lastid创建的会话变量,它存储了最后一条消息的id,然后检查数据库中的消息ID> $lastid如果有什么东西,只需回显/打印出来,这将作为AJAX函数的结果......

P.S。 - 我在我的某个项目中使用了此代码,因为我不知道您的代码,因此您可能需要根据代码修改此代码 ...

并且elem.scrollTop = elem.scrollHeight;只是滚动到convo框的底部(这是新消息,因为新消息显示在convo框的底部),所以每当有新消息到达时,用户都赢了不得不向下滚动才能看到......

更新数据库时出错:

那么你可以看到我的PHP代码供参考:(这是用于提交消息)

$msgcount = $row['messages'];
$msgcount = $msgcount + 1;
$chk=1;
$sql = "INSERT INTO ".$jobid."_conversation (date, from_id, from_username, to_writer, message, writer_read) 
        VALUES (now(), $userid, '$username', 0, '$message', 0)";
if (mysqli_query($con, $sql)) 
{
 $sql1 = "UPDATE jobs SET messages='$msgcount' WHERE id=$jobid";
 if(mysqli_query($con, $sql1))
  {
   echo 1;
  }
 else
  {
   echo 0;
  }
 }
 else
 {
  echo 0;
 }

这里,回显1为成功,0为失败添加数据库...

现在进行留言检查:

$lastid = $row1['id'];
if ( $lastid > $id)
{
 $to_writer = $row1['to_writer'];
 $message = $row1['message'];
 $rtrn = $rtrn."<div class=\"row\">";
 if ($to_writer == 1)
 {    
  $rtrn = $rtrn."<div class=\"well well-sm col-sm-offset-1 col-sm-8\">".nl2br($message)."</div>";
 }
 else
 {
  $rtrn=$rtrn."<div class=\"well well-sm col-sm-offset-3 col-sm-8\">".nl2br($message)."</div>";
 }
  $rtrn=$rtrn."</div>";
}

此处,$towriter是发送邮件的人的用户名,并检查邮件是在对话框的右侧还是对话框的左侧(区分发送和接收的消息)...然后休息一些HTML,因为我使用Bootstrap在井中显示每条消息......

希望这有助于......:)

答案 1 :(得分:1)

你需要做一个ajax事件来获取textarea的内容并将其发送到数据库,我推荐一个像JQuery这样的简单框架:http://api.jquery.com/jquery.ajax/

答案 2 :(得分:0)

我有这段代码:

SELECT `Id`, `Name`, `Patient_Status_del__c`, `DOB__c`, `Patient_Sub_status_del__c` FROM `Patients__c`

指数是:

<?php
session_start();

require_once("conf/mysql.php");
$nome = $_SESSION["nome"];
$mensagem = $_POST["msg"];

mysqli_query($con, "INSERT INTO chat (user, message) VALUES ('$nome','$mensagem')");
?>