我正在学习PHP并且已经阅读了一些书籍和教程,我已经开始在php消息站点上工作,只是为了学习一些技巧。问题是我无法弄清楚如何刷新用户显示的消息列表。
例如,当用户收到消息时,他们将不会收到该消息,直到他们的网页刷新为止。我意识到我可以在一个时间间隔内刷新页面,但如果正在写一条长消息,则在发送消息之前页面将会刷新。
由于我无法找到解决方案,我可以在网上找到我的头,我想在这里问:) 我对互联网的问题是:有没有办法刷新页面的一个部分,或者继续从数据库中绘制数据并将其回显给用户。
以下是向用户显示消息的页面代码。
<html>
<head>
<title>Conversations - Hepburn's Messager</title>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css">
</head>
<body>
<?php include 'connect.php'; ?>
<?php include 'functions.php'; ?>
<?php include 'title_bar.php'; ?>
<div class='container-fluid'>
<h3>Conversations - Hepburn's Messager</h3>
<?php include 'message_title_bar.php' ?>
<?php
$my_id = $_SESSION['user_id'];
?>
<div>
<?php
if(isset($_GET['hash']) && !empty($_GET['hash'])) {
$hash = $_GET['hash'];
$message_query = mysql_query("SELECT from_id, message FROM messages WHERE group_hash='$hash'");
while($run_message = mysql_fetch_array($message_query)) {
$from_id = $run_message['from_id'];
$message = $run_message['message'];
$user_query = mysql_query("SELECT username FROM users WHERE id='$from_id'");
$run_user = mysql_fetch_array($user_query);
$from_username = $run_user['username'];
echo "<p><b>$from_username</b><br/>$message</p>";
setInterval(function(){
echo "hi!\n";
}, 1000);
}
?>
<br/>
<form method='post'>
<?php
if(isset($_POST['message']) && !empty($_POST['message'])){
$new_message = $_POST['message'];
mysql_query("INSERT INTO messages VALUES('', '$hash', '$my_id', '$new_message')");
header('location: conversations.php?hash='.$hash);
}
?>
<h4>Enter Message:</h4>
<textarea class='form-control' rows='6' cols='50' name='message'></textarea>
<input class='btn btn-primary btn-lg' type='submit' value='Send Message'/> <!-- problem -->
</form>
<?php
} else {
echo "<h4>Select a conversation:<h4>";
$get_con = mysql_query("SELECT hash, user_one, user_two FROM message_group WHERE user_one='$my_id' OR user_two='$my_id'");
while($run_con = mysql_fetch_array($get_con)){
$hash = $run_con['hash'];
$user_one = $run_con['user_one'];
$user_two = $run_con['user_two'];
if($user_one == $my_id){
$select_id = $user_two;
} else {
$select_id = $user_one;
}
$user_get = mysql_query("SELECT username FROM users WHERE id='$select_id'");
$run_user = mysql_fetch_array($user_get);
$select_username = $run_user['username'];
echo "<p><a href='conversations.php?hash=$hash'>$select_username</a></p>";
}
}
?>
</div>
</div>
</body>
</html>