【问题标题】:PHP Instant messengerPHP 即时通讯工具
【发布时间】:2015-02-14 15:55:30
【问题描述】:

我正在尝试使用 PHP 和 SQL 制作信使 这是我的代码

    <form action="send_post.php" method="post">
    <h3>Name:</h3>
    <input type="text" name="name">
    <h3>Message:</h3>
    <input type="text" name="message">
    <input type="submit">
</form>
<?php
$servername = "servername";
$username = "username";
$password = "password";
$dbname = "dbname";
// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
} 

$sql = "SELECT id, name, message FROM chat";
$result = $conn->query($sql);

if ($result->num_rows > 0) {
        while($row = $result->fetch_assoc()) {
                while(1){
                        ob_start();
                        echo "" . $row["name"]. " - " . $row["message"]. "<br>";

                        sleep(10);
                        echo "" . $row["name"]. " - " . $row["message"]. "<br>";
                        ob_end_clean();

}
} 
}


$conn->close();
?>

但是这不起作用,有什么原因吗? 一旦我添加了无限循环来刷新消息,问题就开始了。

【问题讨论】:

  • while(1){ 删除这个循环
  • 但我希望查询自动刷新
  • 怎么不行?你期望它做什么?它做错了什么?请参阅What topics can I ask about here?、How do I ask a good question? 和How to create a Minimal, Complete, and Verifiable example。
  • 它给出了 500 错误。我希望它会自动刷新查询。它没有刷新查询
  • 您所做的代码不会从数据库中收集新的更新。一旦你SELECT 某事,数据库计算结果并将其发回。它不会保持与表的“实时”连接并分发新的更新。我建议你从头开始,看看其他人是如何实现聊天机制的。

标签: php sql messenger


【解决方案1】:

PHP 在服务器端工作,这意味着客户端(来宾)请求一个页面,然后服务器“编译”该页面,然后以客户端语言(如 HTML)的形式发送给客户端。如果 PHP 代码永远不会结束/停止,客户端浏览器会认为服务器停止响应并给出错误。

要实现您想要做的事情,您可能需要查看JQuery AJAX 之类的东西,它允许客户端从主请求中单独从服务器获取数据。这样,您可以让一个文件仅显示消息并在计时器上请求该文件,同时让表单像往常一样加载页面。但是,您也可以使用 JQuery AJAX

使表单动态化

更新您可以查看此blogpost 以了解我在说什么。

【讨论】:

  • 我不知道谁对你投了反对票,因为这是正确的答案,所以我想我至少会让你重新投票。
  • 好吧,举个例子来说明他的答案就好了:)
猜你喜欢
  • 2011-05-17
  • 1970-01-01
  • 2016-04-14
  • 1970-01-01
  • 2015-06-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多