熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> PHP編程 >> 正文

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

2013-11-15 12:44:12  來源: PHP編程 
    MySQL並發能力強響應速度快是性能優異的數據庫軟件;PHP是功能強大的服務器端腳本語言筆者在山西鋁廠網站開發中采用PHP+MySQL建立了多種應用下面以一個簡單的聊天室設計為例介紹PHP+MySQL在網頁開發中的應用

    總體設計

     構思與規劃:

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

     表設計

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

    mysql> CREATE TABLE chat
    > (chtime DATATIME
    > nick CHAR() NOT NULL
    >words CHAR());

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

     網頁設計

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

    建立頁框的結構(mainphp)

    顯示大家發言的程序段(cdisplayphp)

    傳送用戶發言的程序段(speakphp)

    用戶登錄進入聊天室程序段(loginphp)

    代碼設計

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

     用戶登錄loginphp本段代碼是一個完全HTML網頁

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

    用戶提交自己的昵稱後就進入到聊天室以下的處理交由mainphp處理

     頁框主體代碼段mainphp:

    <?
    setcookie(nick$nick) //用cookie記錄用戶昵稱是常用的傳遞變量方法
    ?>
    <html>
    <title>山西鋁廠聊天室試用版ver</title>
    <frameset rows=%*
    <frame src= cdisplayphp name=chatdisplay
    <frame src=speakphp name=speak
    </frameset>
    </html>

     顯示發言cdisplayphp

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

    <html>
    <head>
    <title>顯示用戶發言</title>
    <meta httpequiv=refresh content=;url=cdisplayphp
    </head>
    <body>
    <?
    $link_ID=mysql_connect(mainroot);
    //鏈接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); //取得查詢結果的記錄筆數
    //取得最後筆發言並顯示
    @mysql_data_seek($resut$rows); //移動記錄指針到前筆記錄
    if ($rows<) $l=$rows; else $l=; //記錄總數小於則最多為該記錄數
    for ($i=;$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); //移動記錄指針到前筆記錄
    list($limtime)=mysql_fetch_row($result);
    $str=DELETE FROM chat WHERE chtime<$limtime ; ;
    $result=mysql_query($str$link_ID); //送出查詢字符串庫中只留前個記錄
    mysql_close($link_ID);
    ?>
    </body>
    </html>

     送出發言到數據庫speakphp

    <html>
    <head>
    <title>發言</title>
    </head>
    <body>
    <?
    If ($words)
    { $link_ID=mysql_connect(mainroot);
    mysql_select_db(abc); //數據庫名為abc
    $time=date(y)date(m)date(d)date(h)date(i)(date(s); //取得當前時間
    $str=INSERT INTO chat(chtimenickwords) values ($time$nick$words); ;
    mysql_query($str$link_ID); //送出發言到數據庫
    mysql_close($link_ID);
    }
    ?>
    //輸入發言的表單
    <form action=speakphp method=post target= _self
    <input type=text name=words cols=
    <input type=submit value=發言
    </form>
    </body>
    </html>

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


From:http://tw.wingwit.com/Article/program/PHP/201311/21516.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.