MySQL併發能力強、響應速度快,是性能優異的數據庫軟件;PHP是功能強大的服務器端腳本語言。筆者在山西鋁廠網站開發中,採用PHP4.0+MySQL3.23.38創建了多種應用。下面,以一個簡單的聊天室設計爲例,介紹PHP+MySQL在網頁開發中的應用。php
一、整體設計html
1.1 構思與規劃:mysql
聊天室的基本原理,就是把每一個連上同一網頁的用戶傳送的發言數據儲存起來,而後將全部的發言數據傳給每一用戶。也就是說,用數據庫聚集每一個人的發言,並將數據庫中的數據傳給每個人就實現了聊天室的功能。sql
1.2 表設計數據庫
首先使用MySQL創建表chat用來儲存用戶的發言: mysql> CREATE TABLE chat -> (chtime DATATIME, -> nick CHAR(10) NOT NULL, ->words CHAR(150));服務器
表中只設定了三個域,chtime是發言的時間,nick爲發言者的暱稱,words是發言的內容,發言最多150個字符cookie
1.3 網頁設計併發
一個最簡單的聊天室一般須要兩個頁框:一個頁框是用戶輸入發言的表單,另外一個用來顯示你們的發言。因此代碼段一般至少須要以下幾段:post
創建頁框的結構(main.php)性能
顯示你們發言的程序段(cdisplay.php)
傳送用戶發言的程序段(speak.php)
用戶登陸進入聊天室程序段(login.php)
二、代碼設計
以上規劃完成後,就能夠着手代碼設計了,採用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、進一步美化頁面等等。