您的位置:首页技术文章
文章详情页

如何用PHP和mysql创建一个ShoutBox

浏览:30日期:2024-02-25 09:15:46

作为一个PHP开发人员,我有时被要求作个shoutbox 。; 如果同样的事情也发生在你身上,这里有一个快速指南。显然,您要为它添加您自己的CSS在上面,但这里是基本思路。; 我们需要一个MySQL数据库表和三个PHP文件。首先,我们需要一个文件保存数据库信息

--- 文件 #1:mysql.inc.php---

<?php# Simply Shouting - ashoutboxexample# File name:mysql.inc.php# Description: A file to hold database info.$host='localhost';$user='database_user_name';$password='database_user_password';$name='database_name';?>

创建一个有四个字段的数据表. 我们命名为shouts. 此前可能你没有这个SQL文件, 创建一个PHP文件'install.php'. 这个文件用过一次之后,记得要删除它!

-- 文件 #2: install.php--

<?php# Simply Shouting - ashoutboxexample# File name: install.php# Description: Creates the database table.

// include the database info fileinclude('mysql.inc.php');

//连接数据库

$connection= @mysql_connect($host,$user,$password) or die(mysql_error());$db= @mysql_select_db($name,$connection) or die(mysql_error());

//如果我们已经有一个表名字叫做'shouts', 需要先删除它$sql='DROP TABLE IF EXISTS `shouts`';$result= @mysql_query($sql,$connection) or die(mysql_error());

// 现在确定没有相同名字的表, 创建它$sql='CREATE TABLE `shouts` ( `id` int(11) NOT NULL auto_increment, `timestamp` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, `shoutby` varchar(50) default NULL, `shout` varchar(50) default NULL, PRIMARY KEY `id` (`id`)) TYPE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1';echo'Creating table: 'shouts'....';// 关闭连接$result= @mysql_query($sql,$connection) or die(mysql_error());?><html><head><title>Simply Shouting - 安装</title></head><body><br />你的安装过程已经完成.; 请立即从你的服务器上删除所有安装文件.; 本程序包含以下安装文件:<br /><br />1) install.php<br /><br /><br /><!-- I could just send them to index.phpautomatically, but then they'd wonder if it created correctly or not. --> 点击 <a href='https://www.haobala.com/bcjs/index.php'>这里</a>开始.</html>

这是主文件:

--- 文件 #3: index.php---

<?# Simply Shouting - ashoutboxexample# File name: index.php# Description: Main page to display our shouts.

//包含数据库信息include_once('mysql.inc.php');//连接数据库$connection= @mysql_connect($host,$user,$password) or die(mysql_error());$db= @mysql_select_db($name,$connection) or die(mysql_error());?><html><head><meta http-equiv='Content-Type' content='text/html; charset=utf-8'><style type='text/css'><!--body,td,th { font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12px;}--></style><body><div style='width:500px;height 400px; border:thin groove #519554;'><?// 显示最新10条留言. 首先,初始化一个计数器$counting=0;

// we need a counter because I want to show our shouts in ASC order// (like a chat room)

$sql=mysql_query('SELECT * FROM `shouts`');while($data=mysql_fetch_array($sql)){//counts every row$counting=$counting+1;} //end while

// if the count comes back greater than 10, then we select the last// 10 shouts for display.

if($counting>10){$countlessten=$counting-9;$sql=mysql_query('SELECT * FROM `shouts` ORDER BY `shouts`.`id` ASC LIMIT $countlessten,10');}else{//else it doesn't matter, there's less than 10!$sql=mysql_query('SELECT * FROM `shouts` ORDER BY `shouts`.`id` ASC LIMIT 10');}while($data=mysql_fetch_array($sql)){//my timestamp field in the database is basically useless to me unless //I parse it. The following code parses the timestamp into things I //can use.$timestamp=$data['timestamp'];$postedyear=substr($timestamp,0,4);$postedmonth=substr($timestamp,5,2);$postedday=substr($timestamp,8,2);$postedtime=substr($timestamp,11,5);$newpostedtime='';$nomilitary=substr($postedtime,0,2);

// the hour is greater than 12, so we need to switch back to 1-12 and // add a 'pm'if($nomilitary>=13){ $nomilitary=$nomilitary-12; $newpostedtime=$nomilitary; $newpostedtime.=':'; $newpostedtime.=substr($postedtime,3,2) ; $newpostedtime.=' pm'; } if($newpostedtime!=''){ $postedtime=$newpostedtime; }else{ $postedtime.=' am'; }//now that we have the time, let's get the shout and the shouter

$shoutby=$data['shoutby'];$shout=$data['shout']; echo$postedmonth.'/'.$postedday.'/'.$postedyear.' at '.$postedtime.' - <strong>'.$shoutby.' said: </strong>'.$shout.'<br><br>';// looks like: 12/1/2008 at 5:02pm - Josh said: Yo Yo Yo!}//below is the HTML form for creating the shouts?><form name='newshout' action='newshout.php' method='post'><input name='shoutby' type='text' onClick='javascript:this.value=''' value='Enter your name here' size='24' maxlength='50' /><br><br><input name='shout' type='text' onClick='javascript:this.value=''' value='Click & Shout!' size='24' maxlength='50' /><br><br><input name='submit' type='submit' value='Shout!' /></form></div></body></html>

最后, 我们需要一个 PHP 文件处理表单.

-- 文件#4: newshout.php--

<?# Simply Shouting - ashoutboxexample# File name: newshout.php# Description: Process the HTML form on index.phpand redirect.

//得到留言者姓名$shoutby=$_POST['shoutby'];if($shoutby=='Enter your name here'||$shoutby==''){//如果没有输入名字 $shoutby='Visitor';}if($_POST['shout']){// 留言信息 if($_POST['shout'] !='Click & Shout!'){ //they didn't shout the default, so continue processing $shout=$_POST['shout']; //替换掉'<'和'>'以阻止黑客 $shout=str_replace('<',' ',$shout); $shout=str_replace('>',' ',$shout); // 包含数据信息; include_once('dbaccess.php'); // 连接数据库 $connection= @mysql_connect($host,$user,$password) or die(mysql_error()); $db= @mysql_select_db($name,$connection) or die(mysql_error()); //; 插入留言信息到数据库 $sql='INSERT INTO `shouts`(`shoutby`,`shout`) VALUES('$shoutby','$shout')';//关闭连接$result= @mysql_query($sql,$connection); }}?><html><head></head><body onLoad='window.open('index.php','_self')'></body></html>

标签: PHP