Design an Online Chat Room with PHP and MySQL!

by Rory Canyon


In this article, you will learn how to design and develop a simple online chat room with PHP and MySQL. This tutorial explains every steps of the development, including both database design and PHP programming. Basic computer skills and knowledge of HTML and PHP are required. Ok, let's begin now.

Step 1: Design Database Table. Create table "chat" in MySQL database to store basic chat information: chtime (chat time), nick (user nickname) and words (chat message, less than 150 characters)

mysql> CREATE TABLE chat 

-> chtime DATATIME,

-> nick CHAR (10) NOT NULL,

-> words CHAR (150);

Step 2: Design Structure. This simple online chat room includes the following four sections: user login, message display, message input and a main frame integrating the display and input sections. Thus, it needs the following four files to work: login.php, main.php, display.php and speak.php. 


Step 3: Write the code

1. login.php (just a HTML form)

<html>

<head>

<title>User Login</title>

</head>

<body>

Please input your nickname and enter




<form action="main.php" method="post" target="_self">

<input type="text" name="nick" cols="20">

<input type="submit" value="login">

</form>

</body>

</html>

2. main.php

<?

setcookie("nick",$nick) //use cookie to store user nickname 

?>

<html>

<title>My Chat Room</title>

<frameset rows="80%,*">

<frame src="display.php" name="chatdisplay">

<frame src="speak.php" name="speak">

</frameset>

</html>

3. display.php

This file is used to get message records from database and display the results. To keep the size of database, old messages are deleted and only the newest 15 messages are displayed.

<html>

<head>

<title>Display Messages</title>

<meta http-equiv="refresh" content="5;url=display.php">

</head>

<body>

//connect to mysql server, server name: main, database username: root

$link_ID=mysql_connect("main","root");

mysql_select_db("abc"); //abc is the database name

$str="select * from chat ORDER BY chtime;" ; 

$result=mysql_query($str, $link_ID); 

$rows=mysql_num_rows($result);

//get the latest 15 messages

@mysql_data_seek($resut,$rows-15);

//if the number of messages<15, get all of the messages

if ($rows<15) $l=$rows; else $l=15; for ($i=1;$i<=$l; $i++) {

list($chtime, $nick, $words)=mysql_fetch_row($result);

echo $chtime; echo " "; echo $nick; echo":" ; echo $words; echo "
";

} //delete the old messages(only keep the newest 20 only)

@mysql_data_seek($result,$rows-20); 

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> 

4. speak.php

<html>

<head>

<title>Speak</title>

</head>

<body>

<?

If ($words)

{ $link_ID=mysql_connect("main","root");

mysql_select_db("abc"); // abc is the database name

$time=date(y).date(m).date(d).date(h).date(i).(date(s); //get current time

$str="INSERT INTO chat(chtime,nick,words) values ('$time','$nick','$words');" ; 

mysql_query($str,$link_ID); //save message record into database

mysql_close($link_ID); )

?>

//the following is the message input form

<form action="speak.php" method="post" target=" _self">

<input type="text" name="words" cols="20">

<input type="submit" value="Speak">

</form>

</body>

</html>

Now, you have finished the design and coding of a simple online chat system. Put all the files into your website root and see how it works, :)


About the Author: Rory Canyon is the founder of ScriptMenu.com, a free web directory for PHP, ASP, ASP.NET, PERL, XML, Java, JavaScript, Flash, CFML, Python and other web programming resources. For more information, visit http://www.scriptmenu.com 


Create PDF eBooks Instantly!

Still No PDF Download Option For Your Customers Because Your Brain Just Shrivels Up When You Try To Buy/Use Adobe Acrobat software?

Now, You Can Point And Click Your Way To Instant, Hassle-Free PDF Publishing ... Using One of The 33 Free To Nearly Free Tools!

Order Now and Receive Master Resell Rights, Keep 100% of The Profits!
(This Offer May End At Any Time)


Easy PDF Publisher's Toolkit

Create PDF Files From Any Printable Document in a Few Simple Clicks!

"Finally There's an EASY Way To Publish Stunning PDF Files,
Without Wasting a Lot of Time and Money"

Easy PDF Publisher's Toolkit

space
Translate Page!
Espa˝olFranšaisDeutschNederlands








Newsletter

Sign-Up for The Business Junction Newsletter and Get "FREE" Newsletter Sign-Up Software, Specials Updates, Product Updates and MUCH MORE!



 

| Home | AdvertiseAffiliates | Contact Us | Contents | Disclaimer & Terms Of Use |

Free Bonus Gifts | Free Software | Hot Software | JV Giveaways | Link Partners |

Link To Us | Newsletter | Newsletter Articles (The Best From Our Archives) |

Privacy Policy | Site of the Week | Software Directory | Software Spotlights | Special Offers | Turnkey Web Sites |

The World's Largest Digital Package!
SUPER COMBO PACKAGE
(16,090+ Products & Getting Bigger Daily)

Our Other Premium Packages!
EXTREME Niche Combo Package (8,585+ Products)
Private Label Rights Package (3,230+ Products)
Graphics & Web Design Package (3,915+ Products)
Internet Marketing Package (2,615+ Products)
Sports, Leisure, and Health Package (2,540+ Products)
Social Media Marketing & SEO Package (1,265+ Products)
Affiliate Marketing Package (825+ Products)
Blog, Podcasting, & RSS Package (745+ Products)
Article Marketing Package (260+ Products)
Auction Marketing Package (210+ Products)
Joint Venture Marketing Package (65+ Products)
Pop-Ups Package (35+ Products)

Copyright 1996 - 2015 TheBusinessJunction.Com

Protected by Copyscape Plagiarism Finder
(All Rights Reserved: No material from this site may be copied for use on another site or
used for any commercial purpose without prior written permission. Violators will be prosecuted!)

The Business Junction does not offer technical assistance with any software sold from our website. All software comes with its own instructions, help and/or 
installation files. Note that most software is designed for Windows platform. If it does not specifically state that it is compatible with Mac platform, do not purchase.