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

  •   2009-08-01/08:15
  • 我经常使用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">&nbsp</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">&nbsp</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%">&nbsp;'.$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%">&nbsp;'.$tempstr.'</td>';
    //      print '<td width="48%">'.$row["title"].'</td>';
          print '<td width="9%">&nbsp;'.$row["createman"].'</td>';
          print '<td width="5%"><div align="center">'.$row["replycount"].'</td>';
          $temptime = substr($row["replytime"],5,11);
          print '<td width="11%">&nbsp;'.$temptime.'</td>';
          print '<td width="10%">&nbsp;'.$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>

    【本文版权归作者zhangcg与奥索网共同拥有,如需转载,请注明作者及出处】     


    评论 {{userinfo.comments}}

    {{money}}

    {{question.question}}

    A {{question.A}}
    B {{question.B}}
    C {{question.C}}
    D {{question.D}}
    提交

    驱动号 更多