php - 没有框架的数据库更改后刷新网页?消息应用
问题描述
在没有框架的情况下对数据库进行更改时是否可以刷新网页?我尝试寻找答案,但似乎都包含某种类型的框架来完成此任务。我不喜欢学习一个新的框架,除非它是完全必要的。我正在尝试制作一个消息传递应用程序。我可以从其他登录的人那里收到消息,但前提是我刷新页面。有没有解决方案,或者可能采取不同的方法?完全有必要学习一个框架来完成这个吗?这是我打印从另一个用户发送的消息的代码,在这种情况下,我将另一个用户命名为 bill:
<?php
$conn = new mysqli($server_name,$server_username,$server_password,$dbname);
$bill = $conn ->query("SELECT message_sent FROM message WHERE name = 'bill'");
while($row = $bill->fetch_assoc())
{
echo $row["message_sent"];
}
?>
解决方案
您只需使用 2 个文件即可轻松完成此操作 -index.php
显示一个 HTML 页面,并get_messages.php
提供最新消息。
这确实使用了一些jQuery 来进行服务器端获取,但它更像是一个库而不是框架;)
index.php
HTML 页面每 3 秒发送一次请求,get-messages.php
使用任何新消息更新页面。
服务器端脚本get_messages.php
还随机创建消息,因此您可以看到即时结果……一旦您看到它的实际效果,您可以删除// --- BEGIN FAKE MESSAGE CREATION --- //
和// --- END FAKE MESSAGE CREATION --- //
注释之间的所有内容,并在适当的位置添加您自己的数据库代码。
希望我已经添加了足够的评论来解释发生了什么,在哪里以及为什么!
索引.php
<?php
// --- BEGIN FAKE MESSAGE CREATION --- //
session_start();
unset( $_SESSION[ 'messages' ] );
// --- END FAKE MESSAGE CREATION --- //
?>
<!--DOCTYPE HTML -->
<html>
<head>
<meta charset="utf-8">
<title>Messages</title>
<!-- Load jQuery -->
<script src="https://code.jquery.com/jquery-3.3.1.min.js"
integrity="sha256-FgpCb/KJQlLNfOu91ta32o/NMZxltwRo8QtmkMRdAu8="
crossorigin="anonymous"></script>
</head>
<body>
<h1>Messages</h1>
<!-- This <div> is where messages will be displayed -->
<div id="message_list"></div>
<script>
function get_messages() {
// Load messages from the server
$.ajax({
url: 'get_messages.php',
success: function(result){
// Insert the result into <div id="message_list">
$("#message_list").html(result);
}
});
}
// Wait for the page to load...
$(document).ready( function() {
// Get messages straight away
get_messages();
// Call get_messages() every 3 seconds
setInterval( get_messages, 3000 );
});
</script>
</body>
</html>
get_messages.php
<?php
// --- BEGIN FAKE MESSAGE CREATION --- //
session_start();
// Maybe create a new message?
if ( !rand( 0, 3 ) )
$_SESSION[ 'messages' ][] = md5( time() );
$messages = $_SESSION[ 'messages' ];
// --- END FAKE MESSAGE CREATION --- //
echo '<p>Last updated: ' . date( 'H:i:s' ) . '</p>';
// *** This is where you'd loop through your database entries *** //
foreach ( $messages as $m )
echo $m . '<br>';
?>
我知道这远非最优雅的解决方案,但希望这是一个很好的简单示例 - 一个改进是只返回新消息,并将它们附加到现有列表(以节省带宽等)......但我'留给你去弄清楚!
推荐阅读
- elasticsearch - elasticsearch more_like_this 查询不适用于大于 6 的数组
- angular - Gitlab Pipeline作业失败的角度构建
- javascript - 正则表达式匹配以表标签开头的字符串,仅排除警告词
- python - 如何用字典创建华夫饼图?
- html - SVG 无法正确调整 Firefox 和 Edge 中 flexbox 中容器的大小
- python - 视图计数器不会在数据库中增加
- swift - swift中的noHistory等价物,没有以前的视图控制器
- python - 如何在 Azure 中的 python 中使用 Eventhub 和 Storage SDK
- angular - 在更改表单控制角度反应形式之前询问确认警报
- java - JavaDoc中的`.`和`#`有什么区别?