程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> 關於MYSQL數據庫 >> 教你巧用PHP+MySQL搭建一個聊天室

教你巧用PHP+MySQL搭建一個聊天室

編輯:關於MYSQL數據庫

MySQL並發能力強、響應速度快,是性能優異的數據庫軟件;PHP是功能強大的服務器端腳本語言。筆者在山西鋁廠網站開發中,采用PHP4.0+MySQL3.23.38建立了多種應用。下面,以一個簡單的聊天室設計為例,介紹PHP+MySQL在網頁開發中的應用。

1、總體設計

1.1 構思與規劃:

聊天室的基本原理,就是把每個連上同一網頁的用戶傳送的發言數據儲存起來,然後將所有的發言數據傳給每一用戶。也就是說,用數據庫匯集每個人的發言,並將數據庫中的數據傳給每一個人就實現了聊天室的功能。

1.2 表設計

首先使用MySQL建立表chat用來儲存用戶的發言:

MySQL> CREATE TABLE chat
-> (chtime DATATIME,
-> nick CHAR(10) NOT NULL,
->Words CHAR(150));

表中只設定了三個域,chtime是發言的時間,nick為發言者的昵稱,Words是發言的內容,發言最多150個字符

1.3 網頁設計

一個最簡單的聊天室通常需要兩個頁框:一個頁框是用戶輸入發言的表單,另一個用來顯示大家的發言。所以代碼段通常至少需要如下幾段:

建立頁框的結構(main.PHP)

顯示大家發言的程序段(cdisplay.PHP)

傳送用戶發言的程序段(speak.PHP)

用戶登錄進入聊天室程序段(login.PHP)

2、代碼設計

以上規劃完成後,就可以著手代碼設計了,采用PHP可以非常簡明實現以上的功能。

2.1 用戶登錄login.PHP,本段代碼是一個完全Html網頁

<html>
<head>
 <title>用戶登錄</title>
</head>
<body>請輸入您的昵稱<br>
<form action=”main.PHP” method=”post” target=”_self”>
 <input type=”text” name=”nick” cols=”20”>
 <input type=”submit” value=”登錄”>
</body>
</Html>

用戶提交自己的昵稱後,就進入到聊天室,以下的處理交由main.PHP處理。

2.2 頁框主體代碼段main.PHP:

<?
 setcookie(“nick”,$nick) //用cookIE記錄用戶昵稱,是常用的傳遞變量方法
?>
<html>
<title>山西鋁廠聊天室試用版ver1.0</title>
<frameset rows=”80%,*”>
<frame src=” cdisplay.php” name=”chatdisplay”>
<frame src=”speak.PHP” name=”speak”>
</frameset>
</Html>

2.3 顯示發言cdisplay.PHP

本代碼段的任務是將表chat中的數據取出,顯示在頁框中。每次刷新時,取數據庫中最近的15條發言。同時,為防止數據庫無限增大,需設計刪除陳舊數據的功能。代碼如下










<Html>
<head>
 <title>顯示用戶發言</title>
 <meta http-equiv=”refresh” content=”5;url=cdisplay.PHP”>
</head>
<body>
<?
 $link_ID=mysql_connect(“main”,”root”);
 //鏈接Mysql服務器 服務器名為main,管理員名為root
 MySQL_select_db(“abc”); //選擇數據庫
 $str=”select * from chat ORDER BY chtime;” ; //查詢字符串
 $result=mysql_query($str, $link_ID); //送出查詢
 $rows=mysql_num_rows($result); //取得查詢結果的記錄筆數
 //取得最後15筆發言,並顯示
 @mysql_data_seek($resut,$rows-15); //移動記錄指針到前15筆記錄
 if ($rows<15) $l=$rows; else $l=15; //記錄總數小於15,則最多為該記錄數
 for ($i=1;$i<=$l;$i++) {
  list($chtime,$nick,$words)=mysql_fetch_row($result);
  echo $chtime; echo “ “;echo $nick; echo”:” ; echo $Words; echo “<BR>”;
 }
 //清除庫中過時的數據
 @mysql_data_seek($result,$rows-20); //移動記錄指針到前20筆記錄
 list($limtime)=mysql_fetch_row($result);
 $str=”DELETE FROM chat WHERE chtime<’$limtime’ ;” ;
 $result=mysql_query($str,$link_ID); //送出查詢字符串,庫中只留前20個記錄
 MySQL_close($link_ID);
?>
</body>
</Html>

2.4 送出發言到數據庫speak.PHP

<Html>
<head>
 <title>發言</title>
</head>
<body>
<?
 If ($words)
  { $link_ID=mysql_connect(“main”,”root”);
  mysql_select_db(“abc”); //數據庫名為abc
  $time=date(y).date(m).date(d).date(h).date(i).(date(s); //取得當前時間
  $str=”INSERT INTO chat(chtime,nick,words) values
    (‘$time’,’$nick’,’$Words’);” ; 
  MySQL_query($str,$link_ID); //送出發言到數據庫
  MySQL_close($link_ID);
 }
?>
//輸入發言的表單
<form action=”speak.PHP” method=”post” target=” _self”>
 <input type=”text” name=”Words” cols=”20”>
 <input type=”submit” value=”發言”>
</form>
</body>
</Html>

完成以上工作後,一個簡單的聊天室制作就完成了。當然,設計者可以根據個人愛好做一些個性化設計,如增加一個頁框,顯示當前聊天室人員名單、增加發言表情、取得發言者IP、進一步美化頁面等等。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved