【发布时间】:2015-11-05 15:10:30
【问题描述】:
我正在使用 PHP 并创建了一个非常复杂的消息传递系统。但我的问题是它不会显示第一条消息,直到它被“推”起来。如果我转到某人的个人资料并向他们发送消息,第一条消息将不会显示,但如果我发送另一个消息,则第一条显示但第二条没有...直到我发送第三条消息,然后显示第一条和第二条以此类推。
我已经测试过了,它似乎不是 css 或 MySQL。文本实际上正在显示,并且数据库在每条消息发送的第二秒就存储它。我什至发送了 1 条消息,回家,然后检查它是否已发送,但它不会显示,直到发送第二条消息。该数据库还显示了正在存储的消息数据,它在那里以及所有内容。
有没有办法将我的 php 输出中的行向前推一个?这样就走上了正轨?
下面的代码检查数据库中两个用户之间的任何消息,如果存在则将它们存储到一个数组中。
$query = "select * from messages INNER JOIN users u on u.userid = messages.createduserid
where (createduserid='$user' && recuserid='$recuser') OR (createduserid='$recuser' && recuserid='$user')
ORDER BY createddate DESC limit 6 " or die("Error in the consult.." . mysqli_error($connection));
$result = $connection->query($query);
$row = mysqli_fetch_array($result);
这会将上面创建的数组取出来供用户查看
while ($profilepreviewlist = $result->fetch_assoc()) {
echo '<div class="previewlistitem">';
echo'<p class="messagetext">';
echo $profilepreviewlist['username'],': ';
echo $profilepreviewlist['body'];
echo'<div class="messagedate">';
echo ($profilepreviewlist["createddate"]);
echo'</div>';
echo'</p>';
echo '</div>';
}
?>
按下此按钮时,将发送消息并运行其下方的代码
<input class="input" name="messageplace" placeholder="Type a message here" id="messageplace">
此代码存储他们发送到数据库的消息中的数据,然后刷新消息页面
$userid = $_SESSION['userid'];
$recuserid = $_SESSION['tempuserid'];
$body=$_POST['messageplace'];
$datee = new DateTime("NOW");
$createddate = $datee->format('Y-m-d H:i:s');
send_message($userid,$recuserid,$body,$createddate);
include('message.php');
如果您有兴趣测试该功能,请告诉我
【问题讨论】:
-
发送第一条消息后,您是否尝试过直接对数据库运行 SQL 语句(通过 PHPMyAdmin 或 MySQL Workbench)?它是否提供了预期的行?
-
$row = mysqli_fetch_array($result);的预期用途是什么?尝试删除它。如果可行,我会发布一个解释原因的答案。 -
我认为@HPierce 是在正确的轨道上。
-
@MonkeyZeus 我可以确认从数据库运行时它确实提供了正确的结果
标签: php mysql message message-queue