用asp.net写的论坛程序--上贴保存

  1. postmessage.aspx :- The page which saved data to the Database</P><P>
    <%@ Import Namespace="System" %>
    <%@ Assembly Name="System.Data" %>
    <%@ Import Namespace="System.Data" %>
    <%@ Import Namespace="System.Data.ADO" %>
    <%@ Page Language="C#" Debug="true" %>
    <html>
    <head>
    <title>Thank You for Posting !</title>
    <script language="C#" runat="server" >
    //execute this script when the page loads
    void Page_Load(Object Src, EventArgs E)
    {
    //if the page is called from another page
    if (!Page.IsPostBack) {
    //Get all the Parameters from the Query string
    string name = Request.Params["name"] ;
    string email = Request.Params["email"] ;
    string subject = Request.Params["subject"] ;
    string ip = Request.Params["ip"] ;
    string date = Request.Params["date" ];
    string message = Request.Params["message"] ;
    bool newmess =true ;
    string previd ="1";
    //Check if the post is a New topic or a reply to a new topic
    if(Request.Params["newpost"].Equals("no"))
    {
    //if its a reply then get the postid called as previd here
    newmess =false ;
    previd = Request.Params["previd"] ;
    }
    //If the post is a new topic then follow the below routine
    if(newmess)
    {
    //The string for the path to the database , if your database is in some other
    directory then edit the path
    //of this variable
    string strConn=@"Provider=Microsoft.Jet.OLEDB.4.0 ;Data Source=
    "+Server.MapPath(".\\\\db\\\\board.mdb") ;
    //Get a ADOConnection to the database
    ADOConnection myConn = new ADOConnection(strConn) ;
    //The SQL Select statement
    string strCom = "Select postid from newpost" ;
    //Create a ADOCommand since we want a ADODataReader later
    ADOCommand myCommand =new ADOCommand(strCom,myConn);
    //Open the connection
    myConn.Open();
    ADODataReader reader;
    //Execute the command and get the Data into "reader"
    myCommand.Execute(out reader) ;
    int i=1 ;
    //Get the current number of records present in the database.
    while(reader.Read())
    {
    i++ ;
    }
    reader.Close() ;
    //build the SQL statement to insert into the Database
    string insertStr =" INSERT INTO newpost VALUES ("
    +i +", '"
    +name+"', '"
    +email+"', '"
    +subject+"', '"
    +ip+"', '"
    +date+"', '"
    +message+"',0, 0)" ;
    myCommand.CommandText =insertStr ;
    //Since the SQL statement does not return any output use "ExecuteNonQuery() method
    myCommand.ExecuteNonQuery() ;
    //Close the connection
    myConn.Close() ;
    }
    else
    {
    //If the posted data is a reply to a topic then follow the below procedure
    //string for the path to the database, if your database is stored in some other directory then
    //edit the path here
    string strConn=@"Provider=Microsoft.Jet.OLEDB.4.0 ;Data Source="+
    Server.MapPath(".\\\\db\\\\board.mdb") ;
    ADOConnection myConn = new ADOConnection(strConn) ;
    //SQL statement to select the replyid
    string strCom = "Select replyid from reply" ;
    //create a ADOCommand
    ADOCommand myCommand =new ADOCommand(strCom,myConn);
    //Open the Connection
    myConn.Open();
    ADODataReader reader;
    //Execute the command and get the Data into "reader"
    myCommand.Execute(out reader) ;
    int i=1 ;
    //Get the current number of records present in the database.
    while(reader.Read())
    {
    i++ ;
    }
    reader.Close() ;
    //Build a statement to insert the values into the reply table
    string insertStr =" INSERT INTO reply VALUES ("
    +i +", '"
    +name+"', '"
    +email+"', '"
    +subject+"', '"
    +ip+"', '"
    +date+"', '"
    +message+"', "
    +previd+")";
    myCommand.CommandText =insertStr ;
    //ExecuteNonQuery - since the command does not return anything
    myCommand.ExecuteNonQuery() ;
    //string to get the replies column from the newpost table
    string replyno = "SELECT replies FROM newpost WHERE postid ="+previd ;
    myCommand.CommandText =replyno ;
    //Execute command and get the reader
    myCommand.Execute(out reader) ;
    //read the first record (remember there can only be one record in the reader since postid is unique)
    reader.Read();
    //Get the "Int16" value of the number of replies from the replies column in the newpost table
    int rep =reader.GetInt16(0) ;
    reader.Close() ;
    rep++ ;
    //SQL statement to update the replies field in the newpost table
    string updtStr ="UPDATE newpost SET replies = "+rep
    +" WHERE (postid = "+previd+")" ;
    myCommand.CommandText = updtStr;
    //ExecuteNonQuerry why ?? I guess U should know by now !
    myCommand.ExecuteNonQuery();
    myConn.Close() ;
    }
    //get the different Parameters from the query string and store it
    //to respective Labels
    NameLabel.Text = name;
    EmailLabel.Text= email ;
    SubjectLabel.Text=subject;
    MessageLabel.Text=message ;
    }
    else
    {
    //else display an error
    errmess.Text="This Page Cannot be called directly. It has to be called from the Form posting page.<br>" ;
    }
    }
    </script>
    <LINK href="mystyle.css" type=text/css rel=stylesheet>
    </head>
    <body topmargin="0" leftmargin="0" rightmargin="0" marginwidth="0" marginheight="0">
    <!-- #Include File="header.inc" -->
    <center>
    <asp:label id="errmess" text="" style="color:#FF0000" runat="server" />
    <h2 class="fodark"><b>Thank You , for posting on the Message Board.</b></h2>
    <table align=center width="60%" border="0" cellspacing="2" cellpadding="1" >
    <tr class="fohead"><td colspan="2">The information You Posted!</td></tr>
    <tr class="folight">
    <td>Name :</td>
    <td><asp:label id="NameLabel" text="" runat="server" /></td>
    </tr>
    <tr class="folight">
    <td>E-Mail :</td>
    <td><asp:label id="EmailLabel" text="" runat="server" /></td>
    </tr>
    <tr class="folight">
    <td>Subject :</td>
    <td><asp:label id="SubjectLabel" text="" runat="server" /></td>
    </tr>
    <tr class="folight">
    <td>Message :</td>
    <td><asp:label id="MessageLabel" text="" runat="server" /></td>
    </tr>
    </table>
    <br>
    <h4 class="fodark"><a href="forum.aspx">Click here </a> to go back to the Forum.<br>
    <%-- A little work to show the link to return back to the page if, the post was a reply --%>
    <% if(Request.Params["previd"]!=null)
    { %>
    <a href='reply.aspx?postid=<%=Request.Params["previd"] %>'> Click here </a>to go back
    where you came from.
    <% } %>
    </h4>
    </center>
    <!-- #Include File="footer.inc" -->
    </body>
    </html>
Published At
Categories with Web编程
Tagged with
comments powered by Disqus