[PHP] How to create a Shoutbox

o0slowpaul0o

New Member
Messages
254
Reaction score
0
Points
0
Firstly, lets setup our table, enter this SQL data into mySQL or a GUI for mySQL such as phpMyAdmin.

Code:
CREATE TABLE `shoutbox` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`message` TEXT NOT NULL,
`author` VARCHAR(80) NOT NULL,
`email` VARCHAR(50) NOT NULL,
`date` VARCHAR(50) NOT NULL,
`ip` VARCHAR(20) NOT NULL ,
PRIMARY KEY (`id`))

Now lets get on with the script! Amd save this as shoutbox.php

Code:
<?php
// You just need to configure these 4 variables to match your server.
$db_host = "localhost"; // mySQL database host
$db_user = "username"; // mySQL database user
$db_password = "password"; // mySQL database password
$db_name = "database"; // the name of your mySQL database
// If a user has submitted a post, we want to :
// 1. Validate it
// 2. Strip unwanted html
// 3. Make sure messages and names aren't too long
// 4. Add it to our database.
if($_POST['submit']) {
// 1. Validate it, by checking all the form inputs were filled in
    if(!$_POST['author']) {
        echo 'Error ! : No name entered';
        die;
    }
    if(!$_POST['email']) {
        echo 'Error ! : No email entered';
        die;
    }
    if(!$_POST['message']) {
        echo 'Error ! : No message entered';
        die;
    }
// 2. Strip unwanted HTML
// Look up the strip_tags() function at
// http://www.php.net/manual/en/function.strip-tags.php for more info
    $message = strip_tags($_POST['message'], '');
    $email = strip_tags($_POST['email'], '');
    $author = strip_tags($_POST['author'], '');
// 3. Make sure messages and names aren't too long
// We will use the strlen() function to count the length.
    $message_length = strlen($message);
    $author_length = strlen($author);
    if($message_length > 150) {
        echo "Error ! : Your message was too long, messages must be less than 150 chars";
        die;
    }
    if($author_length > 150) {
        echo "Error ! : Your name was too long, names must be less than 150 chars";
        die;
    }
// 4. Add it to our database.
// If the script hasn't died yet due to an error in the inputted data
// we need to add the data to the database
// Lets connect to our database.
    mysql_connect($db_host,$db_user,$db_password) or die(mysql_error());
// Select the database.
    mysql_select_db($db_name) or die(mysql_error());
// Lets define the date format we want to enter to our database
// go here for more details
// http://www.php.net/manual/en/function.date.php
    $date = date("h:i A dS M");
// This will produce 11:02 25th Aug
// Set the query as $query
    $query = "INSERT INTO shoutbox (message, author, email, date, ip)
VALUES ('$message','$author','$email','$date','$_SERVER[REMOTE_ADDR]')";
    mysql_query($query);
    mysql_close();
    // Show thanks message and take them back to the main shoutbox
    echo "Thanks for your post<BR>";
    echo "<A HREF=\"shoutbox.php\">View the shoutbox</A>";
// If they haven't submitted a post, we want to :
// 1. Show the latest shouts
// 2. Show the shout post form
} else {
// 1. Show the latest shouts
// Lets connect to our database.
    mysql_connect($db_host,$db_user,$db_password) or die(mysql_error());
// Select the database.
    mysql_select_db($db_name) or die(mysql_error());
// Set the query as $query, and get the last 10 posts.
    $query = "SELECT message, author, email, date, ip
FROM shoutbox order by id DESC LIMIT 10";
    $result = mysql_query($query);
    echo "<TABLE>";
    while($r=mysql_fetch_array($result))    
    {
// To modify the appearance, edit this :
        echo "<TR>
            <TD><font size='1'>
Posted $r[date] by <A HREF=\"mailto:$r\">
$r[author]</A></font></TD>
        </TR>
        <TR>
            <TD><font size='1'>$r[message]</font></TD>
        </TR>
        <TR>
            <TD><HR></TD>
        </TR>";
        
    }
    echo "</TABLE>";
// 2. Show the shout post form
?>
    <FORM METHOD=POST ACTION="shoutbox.php">
    <TABLE>
    <TR>
        <TD>Name :</TD>
        <TD><INPUT TYPE="text" NAME="author"></TD>
    </TR>
    <TR>
        <TD>Email :</TD>
        <TD><INPUT TYPE="text" NAME="email"></TD>
    </TR>
    <TR>
        <TD>Message :</TD>
        <TD><INPUT TYPE="text" NAME="message"></TD>
    </TR>
    <TR>
        <TD> </TD>
        <TD><INPUT TYPE="submit" name="submit" value="post"></TD>
    </TR>
    </TABLE>
    </FORM>
<?php
}
?>

It would be a bad idea to directly plant this script into your page, as a long word would stretch your page sideways, I recommend to save it as shoutbox.php, and use this code to make an IFRAME in your page.

Code:
<IFRAME src="shoutbox.php" width="300"></IFRAME>
 

Conor

New Member
Messages
3,570
Reaction score
0
Points
0
Re: How to create a Shoutbox

Nice tut. I recommend you make some skinning tuts too :p
 

Tyler

Retired Staff
Messages
8,564
Reaction score
0
Points
0
Re: How to create a Shoutbox

Ya thanks for that tutorial :) im using it!
 

n4tec

Active Member
Messages
3,312
Reaction score
0
Points
36
Re: How to create a Shoutbox

Great tutorial...

happy Easter monday...

nforchange
 

S.D

New Member
Messages
102
Reaction score
0
Points
0
Re: How to create a Shoutbox

very good tutorial, ill use it on my new website :)
 

trev

Member
Prime Account
Messages
670
Reaction score
0
Points
16
Re: How to create a Shoutbox

Great tutorial thanks!
 

Chris

New Member
Messages
1,538
Reaction score
0
Points
0
Re: How to create a Shoutbox

o0slowpaul0o said:
Skinning tutorials? What for?

Like how to make the shoutbox have a template type thing.

I don't see any use. For some things, I want a VERY simple form of it (just like the tutorial does), so I can do the rest myself... that's just me, and that's just for some things.
 

maddude

overall phsyco
Messages
256
Reaction score
0
Points
0
Re: How to create a Shoutbox

this is cool but how do you get a live one so when a new message is posted you dont miss it and dont have to refresh
 

Origin

New Member
Messages
1,082
Reaction score
0
Points
0
Re: How to create a Shoutbox

You keep posting stuff you copy and pasted :( I wonder how much you are getting off of it
 
Top