我正在开发一个登录和注册PHP,HTML,MySql等系统,所以,我的聊天有问题!
我想从textarea获取数据,如果单击该按钮,则清空textarea,并将文本发送到数据库而不刷新页面!我有一个系统刷新数据库中的数据并刷新index.php中的div“chat”。
帮助我!
答案 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')");
?>