国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數(shù)據(jù)庫 > MySQL > 正文

用PHP+MySQL搭建聊天室

2024-07-24 12:57:03
字體:
供稿:網(wǎng)友
  mysql并發(fā)能力強(qiáng)、響應(yīng)速度快,是性能優(yōu)異的數(shù)據(jù)庫軟件;php是功能強(qiáng)大的服務(wù)器端腳本語言。筆者在山西鋁廠網(wǎng)站開發(fā)中,采用php4.0+mysql3.23.38建立了多種應(yīng)用。下面,以一個簡單的聊天室設(shè)計為例,介紹php+mysql在網(wǎng)頁開發(fā)中的應(yīng)用。

  1、總體設(shè)計

  1.1 構(gòu)思與規(guī)劃:

  聊天室的基本原理,就是把每個連上同一網(wǎng)頁的用戶傳送的發(fā)言數(shù)據(jù)儲存起來,然后將所有的發(fā)言數(shù)據(jù)傳給每一用戶。也就是說,用數(shù)據(jù)庫匯集每個人的發(fā)言,并將數(shù)據(jù)庫中的數(shù)據(jù)傳給每一個人就實現(xiàn)了聊天室的功能。

  1.2 表設(shè)計

  首先使用mysql建立表chat用來儲存用戶的發(fā)言:

mysql> create table chat
-> (chtime datatime,
-> nick char(10) not null,
->words char(150));

  表中只設(shè)定了三個域,chtime是發(fā)言的時間,nick為發(fā)言者的昵稱,words是發(fā)言的內(nèi)容,發(fā)言最多150個字符

  1.3 網(wǎng)頁設(shè)計

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

  建立頁框的結(jié)構(gòu)(main.php)

  顯示大家發(fā)言的程序段(cdisplay.php)

  傳送用戶發(fā)言的程序段(speak.php)

  用戶登錄進(jìn)入聊天室程序段(login.php)

  2、代碼設(shè)計

  以上規(guī)劃完成后,就可以著手代碼設(shè)計了,采用php可以非常簡明實現(xiàn)以上的功能。

  2.1 用戶登錄login.php,本段代碼是一個完全html網(wǎng)頁

<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>

  用戶提交自己的昵稱后,就進(jìn)入到聊天室,以下的處理交由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 顯示發(fā)言cdisplay.php

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

<html>
<head>
 <title>顯示用戶發(fā)言</title>
 <meta http-equiv=”refresh” content=”5;url=cdisplay.php”>
</head>
<body>
<?
 $link_id=mysql_connect(“main”,”root”);
 //鏈接mysql服務(wù)器 服務(wù)器名為main,管理員名為root
 mysql_select_db(“abc”); //選擇數(shù)據(jù)庫
 $str=”select * from chat order by chtime;” ; //查詢字符串
 $result=mysql_query($str, $link_id); //送出查詢
 $rows=mysql_num_rows($result); //取得查詢結(jié)果的記錄筆數(shù)
 //取得最后15筆發(fā)言,并顯示
 @mysql_data_seek($resut,$rows-15); //移動記錄指針到前15筆記錄
 if ($rows<15) $l=$rows; else $l=15; //記錄總數(shù)小于15,則最多為該記錄數(shù)
 for ($i=1;$i<=$l;$i++) {
  list($chtime,$nick,$words)=mysql_fetch_row($result);
  echo $chtime; echo “ “;echo $nick; echo”:” ; echo $words; echo “<br>”;
 }
 //清除庫中過時的數(shù)據(jù)
 @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 送出發(fā)言到數(shù)據(jù)庫speak.php

<html>
<head>
 <title>發(fā)言</title>
</head>
<body>
<?
 if ($words)
  { $link_id=mysql_connect(“main”,”root”);
  mysql_select_db(“abc”); //數(shù)據(jù)庫名為abc
  $time=date(y).date(m).date(d).date(h).date(i).(date(s); //取得當(dāng)前時間
  $str=”insert into chat(chtime,nick,words) values
    (‘$time’,’$nick’,’$words’);” ;
  mysql_query($str,$link_id); //送出發(fā)言到數(shù)據(jù)庫
  mysql_close($link_id);
 }
?>

//輸入發(fā)言的表單

<form action=”speak.php” method=”post” target=” _self”>
 <input type=”text” name=”words” cols=”20”>
 <input type=”submit” value=”發(fā)言”>
</form>
</body>
</html>

  完成以上工作后,一個簡單的聊天室制作就完成了。當(dāng)然,設(shè)計者可以根據(jù)個人愛好做一些個性化設(shè)計,如增加一個頁框,顯示當(dāng)前聊天室人員名單、增加發(fā)言表情、取得發(fā)言者ip、進(jìn)一步美化頁面等等。
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 黄平县| 中方县| 罗山县| 长汀县| 湖南省| 普陀区| 黄山市| 鹤庆县| 和平县| 凤翔县| 甘洛县| 新民市| 永川市| 宽甸| 原平市| 青川县| 泸州市| 兴仁县| 法库县| 平顶山市| 长顺县| 汝阳县| 武山县| 湘西| 突泉县| 海林市| 大关县| 五原县| 苍山县| 沅江市| 柞水县| 西和县| 正宁县| 视频| 闽侯县| 科尔| 漠河县| 望江县| 襄城县| 孟连| 濉溪县|