在没有框架的情况下更新数据库更改后的网页?消息传递应用程序

9w11ddsr  于 2021-06-18  发布在  Mysql
关注(0)|答案(1)|浏览(265)

在没有框架的情况下对数据库进行更改时,是否可以刷新网页?我试图寻找一个答案,但似乎都包括某种类型的框架来实现这一点。我不喜欢学习一个新的框架,除非它是完全必要的。我正在尝试制作一个消息应用程序。我可以接收来自其他已登录用户的消息,但前提是我刷新页面。有没有解决这个问题的办法,或者采取不同的方法?要做到这一点,学习一个框架是完全必要的吗?下面是我的代码,用于打印另一个用户发送的消息,我在本例中将另一个用户命名为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"];
}
?>
pu82cl6c

pu82cl6c1#

您只需使用2个文件就可以做到这一点- index.php 显示一个html页面,以及 get_messages.php 提供最新的信息。
这确实使用了一些jquery来执行服务器端获取,但它更像是一个库而不是一个框架;)
这个 index.php html页向发送请求 get-messages.php 每隔3秒,用任何新消息更新页面。
服务器端脚本 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>

获取\u 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>';

?>

我知道这远不是最优雅的解决方案,但希望这是一个很好的简单示例—一个改进是只返回新消息,并将它们附加到现有列表中(以节省带宽等)。。。但我会留给你去弄清楚的!

相关问题