最近兩天在做一個簡單的聊天室程式,涉及到了jquery的Ajax的無刷新更新頁面、php連接mysql資料庫、mysql的簡單操作以及mysql和mysqli的區別。 我是在APPServ的Web環境下做的,使用這個環境的好處是所有建立web網頁的組件都已經集成進去了,這樣就可以忽略構建網頁的其他組 ...
最近兩天在做一個簡單的聊天室程式,涉及到了jquery的Ajax的無刷新更新頁面、php連接mysql資料庫、mysql的簡單操作以及mysql和mysqli的區別。
我是在APPServ的Web環境下做的,使用這個環境的好處是所有建立web網頁的組件都已經集成進去了,這樣就可以忽略構建網頁的其他組件的安裝,而專註於網頁整體的佈局和功能的實現,便於新手如我這樣的菜鳥的學習。
步驟包括這麼幾步:
1、html、css創建聊天室的外形框架,如下圖所示。
2、JS要做兩個方面的工作:1)提交用戶聊天信息,然後處理伺服器端返回的聊天信息,將信息實時呈現出來;
2)每隔一定時間發起查詢資料庫中聊天記錄的請求,然後處理伺服器端返回的聊天信息,將信息實時呈現出來,這是為了使聊天能夠進行,但是保存在資料庫中的信息是有限的,只能刷新一部分。刷新時間影響聊天記錄的延時時間,同時還與網路等速度有關。
3、使用Mysql建立資料庫、建立表格。
4、伺服器端使用php語句查詢資料庫,並將結果生成xml文件傳回到聊天室界面。
具體:
1、聊天室的外形框架。使用html和css即可,需要註意的是css的屬性中的聊天顯示記錄的內容溢出設置,overflow:auto,其其他可選選項有hidden、visible、scroll、inherit
2、客戶端的Js需要兩個方面的功能,第一是:定時刷新,使用自定義的函數updateMsg來實現
function updateMsg(){ $.post("./php/backend.php",{time:timestamp}, function(xml,success){ $('#loading').remove();//移除loading消息,等待提示 addMessages(xml); }); setTimeout('updateMsg()',4000);//每隔4秒,讀取一次 }
其中的addMessages()函數也是自定義的函數,解析從伺服器端傳回來的消息文件,然後添加到聊天顯示區中。
function addMessages(xml){ if($('status',xml).text() ==2) return; //text獲取節點的文本內容 timestamp=$('time',xml).text();//更新時間戳 //$.each迴圈數據 $('message',xml).each(function(){ var author=$('author',this).text();//發佈者 var content=$('msg',this).text();//內容 var htmlcode='<strong>'+author+'</strong>:'+content+'<br />'; $('#messagewindow').append(htmlcode);//添加到文檔中 $('#messagewindow').scrollTop($('#messagewindow')[0].scrollHeight);//$('#messagewindow')[0]轉化為DOM對象 //讓滾動條始終保持在最底部 }); }
3、Mysql資料庫的創建名為chat的資料庫和名為messages的表。
用戶名:root 密碼:12345678 資料庫名:chat 表名:messages
資料庫的簡單使用方法:1)在cmd中使用;2)使用AppServ的mysql命令行
1)在cmd中,打開cmd,常用命令
net start mysql; ---啟動資料庫服務。
mysql-hlocalhost -uroot -p; 回車;要求你輸入密碼,輸入後回車
SHOW DATABASES;你的資料庫列表;
create table tablename (list)
describe tablename;----顯示表的項
select * from tablename;
delete from tablename where ...
exit/quit;---退出mysql資料庫
net stop mysql;---關閉mysql資料庫。
2)打開AppServ的資料庫命令行,用法類似。
在我的程式中建立的表為:
create table messages ( id int(7) not null auto_increment, user varchar(255) not null, msg text not null, time int(9) not null, PRIMARY KEY (id) );
4、伺服器端使用php語句查詢資料庫,並將結果生成xml文件傳回到聊天室界面。
使用php的時候註意版本問題,在瀏覽器中一般會用最新的php來運行【php5、php7等】,就可能對一些使用老版本的語句產生warning或者錯誤,儘量使用最新的版本,老版本的mysql不夠穩定,存在一些安全性的問題,所以推薦使用較高版本的php語句,如mysqli,使用mysql的擴展版本。i為improve的意思。如以下使用資料庫和表格語句的新老版本的不同。
$dbhost = "localhost";
$dbuser = "root";
$dbpass = "12345678";
$dbname = "chat";
//舊的,php3、php4等 $dbconn = mysql_connect($dbhost,$dbuser,$dbpass);//將來可能被廢棄,mysql mysql_select_db($dbname,$dbconn); //新的,php5、php7 $dbconn = mysqli_connect($dbhost,$dbuser,$dbpass,$dbname);
完整程式請查看我的github倉庫: