怎样用PHP写一个简单的论坛详解.docx

上传人:b****0 文档编号:17848909 上传时间:2023-08-04 格式:DOCX 页数:20 大小:131.47KB
下载 相关 举报
怎样用PHP写一个简单的论坛详解.docx_第1页
第1页 / 共20页
怎样用PHP写一个简单的论坛详解.docx_第2页
第2页 / 共20页
怎样用PHP写一个简单的论坛详解.docx_第3页
第3页 / 共20页
怎样用PHP写一个简单的论坛详解.docx_第4页
第4页 / 共20页
怎样用PHP写一个简单的论坛详解.docx_第5页
第5页 / 共20页
怎样用PHP写一个简单的论坛详解.docx_第6页
第6页 / 共20页
怎样用PHP写一个简单的论坛详解.docx_第7页
第7页 / 共20页
怎样用PHP写一个简单的论坛详解.docx_第8页
第8页 / 共20页
怎样用PHP写一个简单的论坛详解.docx_第9页
第9页 / 共20页
怎样用PHP写一个简单的论坛详解.docx_第10页
第10页 / 共20页
怎样用PHP写一个简单的论坛详解.docx_第11页
第11页 / 共20页
怎样用PHP写一个简单的论坛详解.docx_第12页
第12页 / 共20页
怎样用PHP写一个简单的论坛详解.docx_第13页
第13页 / 共20页
怎样用PHP写一个简单的论坛详解.docx_第14页
第14页 / 共20页
怎样用PHP写一个简单的论坛详解.docx_第15页
第15页 / 共20页
怎样用PHP写一个简单的论坛详解.docx_第16页
第16页 / 共20页
怎样用PHP写一个简单的论坛详解.docx_第17页
第17页 / 共20页
怎样用PHP写一个简单的论坛详解.docx_第18页
第18页 / 共20页
怎样用PHP写一个简单的论坛详解.docx_第19页
第19页 / 共20页
怎样用PHP写一个简单的论坛详解.docx_第20页
第20页 / 共20页
亲,该文档总共20页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

怎样用PHP写一个简单的论坛详解.docx

《怎样用PHP写一个简单的论坛详解.docx》由会员分享,可在线阅读,更多相关《怎样用PHP写一个简单的论坛详解.docx(20页珍藏版)》请在冰点文库上搜索。

怎样用PHP写一个简单的论坛详解.docx

怎样用PHP写一个简单的论坛详解

怎样用PHP写一个简单的论坛详解

论坛的功能:

用户分三个级别:

游客;注册用户;管理员

用户:

用户注册;登陆;发帖;回复;编辑自己的帖子;

管理员:

管理(包括添加、修改、删除)论坛版块;管理帖子(置顶、精华、移动、删除);

如果版块完全开放则游客也可以发帖子。

1、PHP环境搭建及MYSQL安装我不在说了,经典原来有详细说明的帖子。

你还可以参照:

或者

这里来在你的电脑上搭建PHP运行环境。

我的环境:

WIN2000+APACHE2.23+MYSQL5.0

2、建立数据库。

PHPMYADMIN是个不错的管理MYSQL的东东,大家可以使用它来建立数据库。

我用的是MYSQL-FRONT,也很好用。

其实一个软件,顺手就好,用不着跟风。

呵呵。

或者你也可以使用MYSQL本身提供的MySQLCommandLineClient来操作数据库:

输入登陆密码,登陆成功后显示如下

建立mybbs数据库,代码如下:

mysql>CREATEDATABASEmybbs;

成功后显示QueryOK,1rowaffected。

以下论坛建表同理:

建立论坛版块表forums,结构如下:

mysql>CREATETABLE`forums`(

->`ID`int(11)NOTNULLauto_increment,

->`forum_name`varchar(50)NOTNULLdefault'',

->`forum_description`varchar(200)NOTNULLdefault'',

->`last_post_author`varchar(50)NOTNULLdefault'',

->`last_post_time`datetimeNOTNULLdefault'0000-00-0000:

00:

00',

->`forum_order`tinyint(3)NOTNULLdefault'0',

->`isguest`tinyint(3)NOTNULLdefault'0',

->PRIMARYKEY(`ID`)

->);

运行成功后图如下所示:

建立用户表member,结构如下

mysql>CREATETABLE`member`(

->`ID`int(11)NOTNULLauto_increment,

->`groupID`tinyint(3)NOTNULLdefault'0',

->`username`varchar(50)NOTNULLdefault'',

->`real_name`varchar(50)NOTNULLdefault'',

->`password`varchar(50)NOTNULLdefault'',

->`email`varchar(50)NOTNULLdefault'',

->`headimg`varchar(50)NOTNULLdefault'',

->`homepage`varchar(50)defaultNULL,

->`qq`varchar(10)defaultNULL,

->`MSN`varchar(50)defaultNULL,

->`jointime`datetimeNOTNULLdefault'0000-00-0000:

00:

00',

->`no_of_post`smallint(6)defaultNULL,

->`sign`varchar(200)defaultNULL,

->PRIMARYKEY(`ID`)

->);

建立主题表tioic,如下:

mysql>CREATETABLE`topic`(

->`ID`int(11)NOTNULLauto_increment,

->`title`varchar(100)NOTNULLdefault'',

->`author`varchar(50)NOTNULLdefault'',

->`last_post_author`varchar(50)defaultNULL,

->`last_post_time`datetimeNOTNULLdefault'0000-00-0000:

00:

00',

->`no_of_hit`smallint(6)NOTNULLdefault'0',

->`no_of_reply`mediumint(9)NOTNULLdefault'0',

->`locked`tinyint(3)NOTNULLdefault'0',

->`face`varchar(50)defaultNULL,

->`topic`tinyint(3)NOTNULLdefault'0',

->`good`tinyint(3)NOTNULLdefault'0',

->`forum_id`mediumint(9)NOTNULLdefault'0',

->PRIMARYKEY(`ID`)

->);

建立帖子表thread,结构如下:

mysql>CREATETABLE`thread`(

->`ID`int(11)NOTNULLauto_increment,

->`topicID`smallint(6)NOTNULLdefault'0',

->`face`varchar(50)defaultNULL,

->`title`varchar(100)defaultNULL,

->`author`varchar(50)NOTNULLdefault'',

->`post_time`datetimeNOTNULLdefault'0000-00-0000:

00:

00',

->`subject`mediumtextNOTNULL,

->PRIMARYKEY(`ID`)

->);

3、连接数据库

(1)连接数据库:

mysql_connect(stringhostname,stringusername,stringpassword);

hostname:

服务器名。

本机"localhost";

username:

登陆用户名。

我这里是"root";

password:

登陆密码。

我这里也是"root";

(2)选择数据库:

mysql_select_db(stringdatabase_name,int[link_identifier]);

database_name就是数据库名,这里就是刚刚建立的mybbs了。

link_identifier:

连接标识,不写就默认是上次使用的连接,具体见下面。

完整的写法如下:

php

mysql_connect("localhost","root","root");//千万不要漏了分号,唉,我自己就经常漏掉……

mysql_select_db("mybbs");

/*或者你可以这样写:

$connect_db=mysql_connect("localhost","root","root");

mysql_select_db("mybbs",$connect_db);

*/

?

>

就象ASP里的conn一样,把这个连接单独放到一个文件里,方便以后调用。

不过ASP用的include,PHP中使用require()或者include()而已,如下:

ASP中:

--#includefile="conn.asp"-->

php中:

php

require("conn.php");

%>

或者:

php

include("conn.php");

?

>

如果你希望测试下刚才连接数据库是否成功,就输出mysql_error()来看:

php

mysql_connect("localhost","root","root");

mysql_select_db("mybbs");

echomysql_error();

?

>

连接正常的话不会输出输出任何错误的。

(3)关闭数据库连接,可以释放系统资源。

mysql_close();

我们把连接和关闭数据库的程序都写在一个文件conn.php中吧:

CODE:

php

mysql_connect("localhost","root","root");

mysql_select_db("mybbs");

Functionclose_db(){

mysql_close();

}

//注意:

函数一种是带返回值的,一种没有值。

?

>

既然require()可以调用外部文件,我们不妨将常用的数据写进变量里然后也单独放在一个文件里,这和ASP道理一样的。

我命名了一个文件global.php,用来初始化这些数据。

php

$gb_name="东讯科技PHP微型论坛";//微型论坛的名字,用在网页的title标签里

$gb_version="Version1.0";//版本号

$gb_copyright="PoweredbyEastsin-东讯科技2006";//版权及连接

//其他的常用的数据可以在做程序的过程中不断的加到这个文件中来。

?

>

现在已经存在两个文件了,一个conn.php,一个global.php。

前一个是记录和MYSQL连接的文件,后一个是记录常用数据的文件。

4、好了,上面数据库也建立了,PHP连接数据库我们也做好了。

那么,我们该学习对MYSQL数据库进行操作了吧:

select查询;

update更新;

insert插入;

delete删除;

如果你有ASP或其他语言基础的话,我想理解应该很easy吧!

那么第一步,从首页开始:

读取数据库中的信息。

首页主要是循环显示forums中的所有论坛版块。

对于有基础的人来说,查询语句很容易:

php

$sql="select*fromforums";

?

>

那么,如何来执行这个查询语句呢?

PHP中用mysql_query()函数来执行SQL语句。

这里要注意的是:

mysql_query()函数来执行SQL语句时,如果执行的是一个SELECT语句,执行后返回一个INT型的标识,如果是非SELECT语句(INSERT,UPDATE等)返回的是boolean型的数据。

所以有ASP基础的同学不要把这里认为成已经成功得到记录集。

我们可以先来看看ASP:

--#includefile="conn.asp"-->

<%

sql="select*fromforums"

rs.opensql,conn,1,1

dowhilenotrs.eof

response.writers("***")

rs.movenext

loop

%>

如果得到了数据,直接rs("***")就可以得到想要的数据了。

但是PHP中这里,执行完mysql_query()函数,并没有得到最终我们想要的数据。

还需要使用其他函数来获取最终数据,我经常使用mysql_fetch_array()和mysql_fetch_row()来获取查询结果。

这两个函数操作的对象都是刚才mysql_query()执行后的结果。

所以,我这样写:

php

require("conn.php");//先把conn.php引入,目的就是打开数据库连接

$sql="select*fromforums";

$result=mysql_query($sql);

while($rs=mysql_fetch_array($result)){

echo"论坛:

".$rs["forum_name"]."
";

}

?

>

这样运行,页面没有任何输出,因为我们刚建立的数据库中没有任何数据!

那么,我希望让论坛更加人性化,假如没有论坛版块应该输出“对不起,论坛尚在建设中……”的字样应该怎么办?

mysql_num_rows()可以得到结果数目,mysql_result()也可以。

mysql_num_rows(intresult)用来获取查询结果数目。

参数result是mysql_query()等返回的结果标识;

mysql_result(intresule,introw)用来获取查询记录集,参数result是mysql_query()等返回的结果标识,row是要获取记录的行号;

代码如下:

php

require("conn.php");

$sql="select*fromforums";

$result=mysql_query($sql);

$num=mysql_num_rows($result);

if($num>0){

while($rs=mysql_fetch_array($result)){

echo"论坛:

".$rs["forum_name"]."
";

}

}else{

echo"对不起,论坛尚在建设中……";

}

/*或者你可以这样写

$sql="selectcount(*)fromforums";

$num=mysql_result(mysql_query($sql),0);

$sql="select*fromforums";

$result=mysql_query($sql);

或者这样写

$sql="selectcount(*)asnumfromforums";

$result=mysql_query($sql);

$num=mysql_fetch_array["num"];

*/

?

>

运行结果如下图:

HOHO~~~~~,能够读取数据了,那下面我们该美化一下我们的首页了吧,用DW吧^@^。

下面是首页论坛列表的表格在DW中(我美工不匝地,望大家先不要扔砖头……):

代码如下:

php

require("conn.php");

……

?

>

论坛列表

状态

论坛

最后更新

php

$sql="select*fromforums";

$result=mysql_query($sql);

$num=mysql_num_rows($result);

if($num>0){

while($row=$db->db_fetch_array($result)){

?

>

phpecho"

F=".$row["ID"]."\">".$row["forum_name"]."

".$row["forum_description"]?

>

phpecho$row["last_post_time"]."By".$row["last_post_author"]?

>

php

}

}else{

echo"对不起,论坛尚在建设中……";

}

close_db();//调用close_db()函数,关闭连接,释放系统资源

?

>

运行结果如下图:

现在数据库中还没有数据,所以,我们运行首页,只显示“对不起,论坛尚在建设中……”。

既然我们很希望看到结果,就往数据库中加几条数据吧!

当然,直接在MySQL客户端运行查询语句"insertintoforums(field1,field2,...fieldN)values(value1,value2,...valueN)"是可行的,但是,作为WEB程序,这样做显然没啥意义。

我们靠表单来插入数据。

建立一个新文件:

add_forum.php。

首先说明的是,这个页面是管理员用来添加版块的,开始肯定要判断当前用户有没有管理权限。

现在我们只为了首页显示数据而已,所以,可以先不加验证程序。

我用DW做的添加论坛版块的表单如下图:

其中排序指论坛排列顺序,SQL语句"orderbyforum_listasc";完全开放的话游客可以发表、回复帖子,否则只注册会员才可以发帖。

表单的HTML部分如下:

论坛管理

论坛名称

论坛简介

论坛排序

完全开放

表单可以用JS或VBS进行验证,也可以提交到save_forum.php后进行必要的验证。

我这里对字符串检验不多说了,只研究插入数据的部分。

首先接收表单的值,要区分POST和GET方式,分别使用$_POST["**"]和$_GET["**"]来接受数据。

php

$forum_name=$_POST["forum_name"];

$forum_description=$_POST["forum_description"];

$forum_order=$_POST["forum_order"];

$isguest=$_POST["isguest"];

//这里注意isguest是复选框,在MYSQL里用0和1来表示是否选中

$isguest=isset($isguest)?

1:

0;//选中的话就是1,不选中的话就是0;

?

>

写入数据库数据的SQL语句大家都很熟悉了,用insert来实现:

php

require_once("conn.php");

//刚才接收值的程序

$sql="insertintoforums(forum_name,forum_description,forum_order,isguest)values('$forum_name','$forum_description','$forum_order','$isguest')";

mysql_query($sql);//到这里,数据已经插入了数据库

header("location:

index.php");//执行完插入则跳转到首页

?

>

看看我添加页面和显示页面吧:

最终显示效果:

OK,现在已经实现了基本的数据插入和读取了。

嘿嘿……下一步,和上面道理一样,注册和登陆界面,同样是用DW做表单,HTML代码我不在赘述,抓个图吧!

会员注册就填写四个条件可以了(现在都讲究用户体验,能少填就少填吧^@^必要的验证自己研究去)

会员登陆见图

先写处理注册信息的部分代码:

php

//reg.php

require_once"conn.php";$username=$_POST["username"];

$password=md5(trim($_POST["password"]));

$email=trim($_POST["email"]);$groupID=1;//默认用户等级:

1为注册会员,2为管理员

$real_name="未知";//默认真实姓名,登陆后自己修改吧

$no_of_post=0;//刚注册用户发贴量肯定为0

$headimg="head/0.gif";//默认用户头像

$sign="Nothing...";//默认用户的签名$num=mysql_result(mysql_query("selectcount(*)frommemberwhereusername='$username'"),0);//检查用户名是否已经被注册

/*上面程序其实就是:

$sql="selectcount(*)frommemberwhereusername='$username'";

$result=mysql_query($sql);

$num=mysql_result($result,0);

*/

if($num){//当用户名已经被注册时

echo"";

}else{

$sql="insertintom

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > IT计算机 > 电脑基础知识

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2