首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 相關知識

採用行寫方式的聊天程式 (五):定時刷新與在線名單模組

     編輯:PHP 相關知識

前言

聊天室採用資料庫逐行儲存訊息,本文提供定時刷新訊息框 (lt4.php) 與在線用戶名單 (ltonline.php) 兩個模組程式碼。

lt4.php - 定時刷新訊息

<?php
session_start();
include('g_fun.php'); // 含資料庫連線函數 f_connectdb()
f_connectdb();

$tmpi = 0;
$query = "SELECT lt_id, lt_speaker, lt_face, lt_speaked, lt_time, lt_content
          FROM lt_t_content
          WHERE lt_id > $chat_hh
          ORDER BY lt_time";
$res = mysql_query($query, $dbh);

while ($row = mysql_fetch_array($res)) {
    // 輸出單筆訊息 HTML (略)
    $tmpi = $row['lt_id'];
}

if ($tmpi > $chat_hh) {
    $chat_hh = $tmpi; // 更新已讀最大 ID
}
?>

ltonline.php - 在線用戶名單

<?php
include('g_fun.php');
f_connectdb();

// 清理超過 500 秒無發言的用戶 (狀態設為 1 離線)
mysql_query("UPDATE lt_t_online SET lt_state = 1 WHERE (NOW() - lt_lasttime) > 500", $dbh);

echo "在線人員信息
"; $res = mysql_query("SELECT lt_username FROM lt_t_online WHERE lt_state = 0", $dbh); while ($row = mysql_fetch_array($res)) { echo $row['lt_username'] . "
"; } ?>

資料表結構參考

  • lt_t_content:lt_id(PK), lt_speaker, lt_face, lt_speaked, lt_time, lt_content
  • lt_t_online:lt_username, lt_state(0在線/1離線), lt_lasttime

說明

  • $chat_hh 為 Session 或 JS 傳遞的已讀最大訊息 ID。
  • 定時刷新建議配合 HTML `` 或 JS `setInterval`。
  • 程式碼使用舊版 `mysql_*` 函數,現代專案請改用 PDO/MySQLi。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved