一个模仿oso的php论坛程序(之一)

  我经常使用oso的论坛,个人感觉挺好的,因此模仿oso的界面编了一个程序,与大家共享。

  程序由三部分组成,即显示主题信息,显示论坛信息,增加论坛信息,主题与论坛内容采用主从表关系。

  表结构如下:

  drop table fr_t_forumtitle;

  create table fr_t_forumtitle(

  id         integer,

  state      varchar(1),

  readcount  integer,

  replycount integer,

  title      varchar(100),

  createman  varchar(20),

  replyman   varchar(20),

  replytime  datetime);

  drop table fr_t_forumcontent;

  create table fr_t_forumcontent(

  id          integer,

  replyman    varchar(20),

  replytime   datetime,

  replyemail  varchar(100),

  replyhttp   varchar(100),

  replyface   smallint,

  content     text);

  drop table fr_t_parameter;

  create table fr_t_parameter(

  code    varchar(10),

  name    varchar(40),

  content varchar(10));

  insert into  fr_t_parameter(code,name,content) values('pageline','分页数','20'); /* 调整该参数可以修改每页行数 */

  程序1:mainforum.php

  <html>

  <head>

  <link rel="STYLESHEET" type="text/css" href="fp_zhangcg.css">

  <meta http-equiv="Content-Type" content="text/html; charset=gb2312">

  <meta name="Microsoft Theme" content="none">

  <meta name="Microsoft Border" content="none">

  <title>论坛</title>

  </head>

  <body bgcolor="#C0C0C0" background="backcolor.GIF">

  <?

  include ("c:mydbheader.inc");

  ?>

  <table width="100%" border="0">

  <tr class="text">

  <td width="50%">   <div align="left">当前位置:主页——论坛</div> </td>

  <td width="20%">   <div align="center"> </div> </td>

  <td width="10%">   <div align="center">

  <A href="addmember.php" target=_blank>会员注册</A></div> </td>

  <td width="10%">   <div align="center">论坛搜索</div> </td>

  <td width="10%">   <div align="center"> </div> </td>

  </table>

  <?

  $dbh =  mysql_connect('localhost:3306','root','');

  mysql_select_db('test');

  $res=mysql_query("SELECT content FROM fr_t_parameter where code = 'pageline'",$dbh);

  $row=mysql_fetch_array($res);

  global $pageline;

  $pageline = $row["content"];

  if (empty($pageline))  {

  $res=mysql_query("insert into fr_t_parameter(code,name,content) values('pageline','分页数','20')",$dbh);

  $row=mysql_fetch_array($res);

  $pageline = 20;

  }

  $res=mysql_query("SELECT COUNT(*) AS rcnt FROM fr_t_forumtitle",$dbh);

  $row=mysql_fetch_array($res);

  $rcount = $row["rcnt"];

  $res=mysql_query("SELECT COUNT(*) AS rcnt_con FROM fr_t_forumcontent",$dbh);

  $row=mysql_fetch_array($res);

  $rcon_count = $row["rcnt_con"];

  print '<table width="100%" border="0">';

  print '<tr class="text">';

  print '<td width="15%">   </td>';

  print '<td width="35%">  <div align="left"> ';

  print "主题数:".$rcount."  帖子数:".$rcon_count;

  print '<td width="35%">  <div align="right"> ';

  print '<a href="addforum.php?theme_id=0" target="_top"><img src="post.gif" alt="加新帖子" border="0"></a>';

  print '<td width="15%">   </td>';

  print '</td></table>';

  $pages=ceil($rcount / $pageline); //$pages变量现在包含所需的页数

  if (empty($offset))  {

  $offset=1;

  $curline = 0;

  } else

  $curline = ($offset - 1) * $pageline;

  //打印表头

  print '<table width="100%" border="0">';

  print '<tr class="text"> <td width="50%">  <div align="center">';

  if ($offset <> 1) { //如果偏移量是0,不显示前一页的链接

  $newoffset=$offset - 1;

  print "<a href='$PHP_SELF?offset=$newoffset'>前一页</a>";

  }  else {

  print "前一页";

  print "   ";

  }

  //计算总共需要的页数

  $pages=ceil($rcount/$pageline); //$pages变量现在包含所需的页数

  for ($i=1; $i <= $pages; $i++)  {

  $temps = "<a href='".$PHP_SELF.'?offset='.$i."'>".$i."</a>";

  print $temps;

  print "   ";

  }

  //检查是否是最后一页

  if ($pages!=0 && $offset!=$pages)  {

  $newoffset=$offset+1;

  print "<a href='$PHP_SELF?offset=$newoffset'>下一页</a>";

  }  else print "下一页";

  print '</div> </td>';

  print '<td width="50%">  <div align="center">';

  print "当前页:".$offset." 共".$pages."页";

  print '</div> </td>';

  print "</table>";

  //处理详细信息

  print '<table width="100%" border="1">';

  print '<tr class="text"> ';

  print '<td width="6%">  <div align="center">New</div>    </td>';

  print '<td width="5%">  <div align="center">点击</div>   </td>';

  print '<td width="53%"> <div align="center">主题</div>   </td>';

  print '<td width="10%">  <div align="center">创建人</div> </td>';

  print '<td width="5%">  <div align="center">回复</div>   </td>';

  print '<td width="11%"> <div align="center">最后修改时间 </div> </td>';

  print '<td width="10%">  <div align="center">回复人</div> </td>';

  print '</tr>';

  $query = 'select id,state,readcount,title,createman,replycount,replytime,replyman

  from fr_t_forumtitle order by replytime desc LIMIT '.$curline.',20';

  $res = mysql_query($query, $dbh);

  //    $li_rownum = mysql_num_rows($res);

  //    for ($i=1; $i<=$li_rownum; $i++) {

  //      $row = mysql_fetch_row($res);

  while ($row = mysql_fetch_array($res)) {

  print '<tr class="text"> ';

  print '<td width="6%"> '.$row["state"].'</td>';

  print '<td width="5%"><div align="center">'.$row["readcount"].'</td>';

  $tempstr = "<a href='readforum.php?readflag=".$row["id"]."'>".$row['title']."</a>";

  print '<td width="53%"> '.$tempstr.'</td>';

  //      print '<td width="48%">'.$row["title"].'</td>';

  print '<td width="9%"> '.$row["createman"].'</td>';

  print '<td width="5%"><div align="center">'.$row["replycount"].'</td>';

  $temptime = substr($row["replytime"],5,11);

  print '<td width="11%"> '.$temptime.'</td>';

  print '<td width="10%"> '.$row["replyman"].'</td>';

  print '</tr>';

  }

  print "</table>";

  //打印表尾

  print '<table width="100%" border="0">';

  print '<tr class="text"> <td width="50%">  <div align="center">';

  if ($offset <> 1) { //如果偏移量是0,不显示前一页的链接

  $newoffset=$offset - 1;

  print "<a href='$PHP_SELF?offset=$newoffset'>前一页</a>";

  }  else {

  print "前一页";

  print "   ";

  }

  //计算总共需要的页数

  for ($i=1; $i <= $pages; $i++)  {

  $temps = "<a href='".$PHP_SELF.'?offset='.$i."'>".$i."</a>";

  print $temps;

  print "   ";

  }

  //检查是否是最后一页

  if ($pages!=0 && $offset!=$pages)  {

  $newoffset=$offset+1;

  print "<a href='$PHP_SELF?offset=$newoffset'>下一页</a>";

  }  else print "下一页";

  print '</div> </td>';

  print '<td width="50%">  <div align="center">';

  print "当前页:".$offset." 共".$pages."页";

  print '</div> </td>';

  print "</table>";

  //end of 打印表尾

  ?>

  <?

  include ("c:mydbfooter.inc");

  ?>

  </body>

  </html>