PX : code

BBS by Leon Atkinson
Download this code


<HTML>
<HEAD>
<TITLE>Leon's BBS</TITLE>
</HEAD>
<BODY BGCOLOR="#FFFFFF">
<?
    /******************************************************
     BBS v1.0
     Code: PHP 3   
     Author: Leon Atkinson <leon.atkinson@clearink.com>
    
     Simple BBS system using MySQL.  Make the following 
     table:

        CREATE TABLE bbsMessage
        (
            ID INT NOT NULL AUTO_INCREMENT,
            Title VARCHAR(64),
            Poster VARCHAR(64),
            Created DATETIME,
            Parent INT,
            Body BLOB,
            PRIMARY KEY(ID)
        );

    *******************************************************/

    printf("<H1>Leon's BBS</H1>\n");

    /* set up database */
    mysql_pconnect("www.yoursever.com", "httpd");
    $Database = "yourdb";

    /****************************************************************
     recursive function that spits out all descendent messages
    ****************************************************************/
    function showMessages($parentID)
    {
        global $Database;

        $dateToUse = Date("U");

        echo "<UL>\n";

        /* show all the wings */        
        $Query = "SELECT * FROM bbsMessage ";
        $Query = $Query . "WHERE Parent=$parentID ";
        $Query = $Query . "ORDER BY Created ";

        $result = mysql($Database,$Query);
        $numRows = mysql_NumRows($result);
        $RowCount = 0;
        while($RowCount < $numRows)
        {
            $messageID = mysql_result($result,$RowCount,"ID");
            $messageTitle = mysql_result($result,$RowCount,"Title");
            $messageCreated = mysql_result($result,$RowCount,"Created");
            $messageParent = mysql_result($result,$RowCount,"Parent");

            /* put a line telling what the wing is */    
            printf("<LI>($messageCreated) <A HREF=\"bbs.htma?messageID=$messageID\">$messageTitle</A><BR>\n");
    
            /* call getWingContents to get this branch */
            showMessages($messageID);

            $RowCount++;
        }

        echo "</UL>\n";
    }

    /****************************************************************
     print out a form for adding a message with parent id given
    ****************************************************************/
    function postForm($parentID, $useTitle)
    {
        printf("<FORM ACTION=\"bbs.htma\" METHOD=\"post\">\n");
        printf("<INPUT TYPE=\"hidden\" NAME=\"inputParent\" VALUE=\"$parentID\">");
        printf("<INPUT TYPE=\"hidden\" NAME=\"ACTION\" VALUE=\"POST\">");
        printf("<TABLE BORDER=\"1\" CELLSPACING=\"0\" CELLPADDING=\"5\" WIDTH=\"400\">\n");
        printf("<TR><TD WIDTH=\"100\"><B>Title</B></TD>");
        printf("<TD WIDTH=\"300\"><INPUT TYPE=\"text\" NAME=\"inputTitle\" SIZE=\"35\" MAXLENGTH\"64\" VALUE=\"$useTitle\"></TD></TR>\n");
        printf("<TR><TD WIDTH=\"100\"><B>Poster</B></TD>");
        printf("<TD WIDTH=\"300\"><INPUT TYPE=\"text\" NAME=\"inputPoster\" SIZE=\"35\" MAXLENGTH\"64\"></TD></TR>\n");
        printf("<TR><TD COLSPAN=\"2\" WIDTH=\"400\">");
        printf("<TEXTAREA NAME=\"inputBody\" COLS=\"45\" ROWS=\"5\"></TEXTAREA></TD></TR>\n");
        printf("<TR><TD COLSPAN=\"2\" WIDTH=\"400\"><CENTER><INPUT TYPE=\"submit\" VALUE=\"Post\"></CENTER></TD></TR>\n");
        printf("</TABLE>\n");
        printf("</FORM>\n");

    }

    /******************************************************
     perform actions
    ******************************************************/
    if($ACTION != "")
    {
        if($ACTION == "POST")
        {
            $inputTitle = ereg_replace("'", "''", $inputTitle);
            $inputBody = ereg_replace("'", "''", $inputBody);

            $Query = "INSERT INTO bbsMessage ";
            $Query .= "VALUES(0, '$inputTitle', ";
            $Query .= "'$inputPoster', ";
            $Query .= "now(), $inputParent, ";
            $Query .= "'$inputBody')";
    
            $result = mysql($Database,$Query);


        }

    }


    /******************************************************
     Show Message or show list of messages
    ******************************************************/
    if($messageID > 0)
    {
        $Query = "SELECT * FROM bbsMessage ";
        $Query = $Query . "WHERE ID=$messageID ";

        $result = mysql($Database,$Query);
        $numRows = mysql_NumRows($result);
        $RowCount = 0;
        if($RowCount < $numRows)
        {
            $messageID = mysql_result($result,$RowCount,"ID");
            $messageTitle = mysql_result($result,$RowCount,"Title");
            $messagePoster = mysql_result($result,$RowCount,"Poster");
            $messageCreated = mysql_result($result,$RowCount,"Created");
            $messageParent = mysql_result($result,$RowCount,"Parent");
            $messageBody = mysql_result($result,$RowCount,"Body");

            printf("<TABLE BORDER=\"1\" CELLSPACING=\"0\" CELLPADDING=\"5\" WIDTH=\"400\">\n");
            printf("<TR><TD WIDTH=\"100\"><B>Title</B></TD><TD WIDTH=\"300\">$messageTitle</TD></TR>\n");
            printf("<TR><TD WIDTH=\"100\"><B>Poster</B></TD><TD WIDTH=\"300\">$messagePoster</TD></TR>\n");
            printf("<TR><TD WIDTH=\"100\"><B>Posted</B></TD><TD WIDTH=\"300\">$messageCreated</TD></TR>\n");
            printf("<TR><TD COLSPAN=\"2\" WIDTH=\"400\">$messageBody</TD></TR>\n");
            printf("</TABLE>\n");

            postForm($messageID, "RE: $messageTitle");

        }
        

        echo "<A HREF=\"bbs.htma\">List of Messages</A><BR>";

    }
    else
    {
        printf("<H2>List of Messages</H2>\n");

        /* call recursive function */
        showMessages(0);

        postForm(0, "");

    }

?>

</BODY>
</HTML>

Comments or questions?
PX is running PHP 5.2.17
Thanks to Miranda Productions for hosting and bandwidth.
Use of any code from PX is at your own risk.