一次获取数据并放入两个不同的 div
Posted
技术标签:
【中文标题】一次获取数据并放入两个不同的 div【英文标题】:Fetching data at once and put in two different div 【发布时间】:2018-04-24 08:06:21 【问题描述】:我一直在尝试获取两个用户之间的聊天消息,并希望将它们放在两个不同的 div
s 中并分别设置两个 div 的样式。我现在正在做的是获取聊天并将其放入单个 div“消息”中,但我想获取数据并将其放入“消息”div 中的两个 div 中。
function fetch_chat()
// to fetch the chats between two users
$.ajax(
url: "fetch_chat.php",
method: "POST",
data:
id: currentID
,
dataType: "text",
success: function(data)
$("#messages").show();
$('#messages').html(data);
$("div.area").show();
//chatTimer = setTimeout(fetch_chat, 500); //request the chat again in 2 seconds time
if (!scrolled)
$("#messages").animate( scrollTop: $(document).height() , "fast");
scrolled = true;
);
<?php
require("config.php");
$id = $_POST['id'];
$sql = "select * from users where id='$id'";
$res = mysqli_query($con, $sql);
$row = mysqli_fetch_array($res);
$user_to = $row['name'];
$sql1 = "select * from chats where user_from='$_SESSION[name]' AND user_to='$user_to' OR user_to='$_SESSION[name]' AND user_from='$user_to' order by id";
$res1 = mysqli_query($con, $sql1);
if (mysqli_num_rows($res1) > 0)
while ($row = mysqli_fetch_array($res1))
echo $row['msg'];
else
echo "No msgs <br />";
?>
【问题讨论】:
【参考方案1】:从数据库中获取数据时,如果消息来自用户,则给它一个类,否则给它一个不同的类。然后在显示聊天结果的 html 文件中,定义这些类样式。将这些样式包含在您拥有函数 fetch_chat() 的文件中,
<style>
.mine
background-color: lightblue;
.notMine
background-color: lightyellow;
</style>
而 php 会是
<?php
require("config.php");
$id= $_POST['id'];
$sql="select * from users where id='$id'";
$res=mysqli_query($con,$sql);
$row=mysqli_fetch_array($res);
$user_to= $row['name'];
$sql1="select * from chats where user_from='$_SESSION[name]' AND user_to='$user_to' OR user_to='$_SESSION[name]' AND user_from='$user_to' order by id";
$res1=mysqli_query($con,$sql1);
if(mysqli_num_rows($res1)>0)
while($row=mysqli_fetch_array($res1))
if($row["user_from"] === $_SESSION["name"] )
echo "<div class='mine'> $row[msg] </div>\n";
else
echo "<div class='notMine'> $row[msg] </div>\n";
//echo $row['msg'];
else
echo "No msgs <br />";
?>
【讨论】:
但是 session[name] 是当前登录的用户的名称。所以 if(userfrom == session(name) 将始终为真。我之前尝试过并得到了相同颜色的整条消息 我们正在检查每一行 - 此行消息是由用户发送还是由用户接收。 - if($row["user_from"] === $_SESSION["name"] ) - 所以如果这个特定的消息是由用户发送的,那么它会有不同的背景。 嗯我想我有点困惑......在我的插入查询中,我在发送消息时插入了会话(名称)。这就是为什么 if 语句在我的情况下总是正确的。你能建议我如何插入发送它的用户的名称或 ID... 插入聊天 (userfrom, user to, msg) 值 ($_session[name], $user to, $msg) ;这是有人发送消息时我的插入查询。 我认为查询没问题。您正在获取两种类型的记录,其中 'from' 是这个用户,而 'to' 是这个用户。所以我想它应该可以工作。以上是关于一次获取数据并放入两个不同的 div的主要内容,如果未能解决你的问题,请参考以下文章
将Sqlite数据放入两个不同Fragment内的两个ListView