PX : code

Notes by Frederic Dumas
Download this code


<?php

/* 
-------------------------------------------------------------------------------
--------------------------- Generic footer with notes -------------------------
-------------------------------------------------------------------------------

Copyright (c) 2000, Institut National de l'Audiovisuel (INA), Research
Department, France. All rights reserved.

Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are
met:
1. Redistributions of source code must retain the above copyright
   notice, this list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright
   notice, this list of conditions and the following disclaimer in the
   documentation and/or other materials provided with the distribution.
3. All advertising materials mentioning features or use of this
   software must display the following acknowledgement: This product
   includes software developed by the Research Department of the
   Institut National de l'Audiovisuel (INA, France), and its
   contributors.
4. Neither the name of the Institute nor the names of its
   contributors may be used to endorse or promote products derived
   from this software without specific prior written permission.

THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS''
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS
BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

-------------------------------------------------------------------------------

This php script adds a "user contribution" capability to any html page. It has 
been found as a very convenient way to build a technical report in a 
collaborative way. As an example (similar system, more complex), you can have a 
look at the PHP annotated manual (http://www.php.net/manual/).

Usage: see notes.README

----------------------------------------------------------------------------- */


function begin_blue_frame() {
        echo 
'<TABLE BORDER=0 CELLSPACING=0 CELLPADDING=0 WIDTH="100%"><TR><TD bgcolor="#a0b8c8">';
};

function 
end_blue_frame() {
        echo 
"<TD></TR></TABLE>";
};

function 
note_footer($note_database$page_name$user$password
                     
$show_form$action$email$note) {

        
// ---------------------------------------------------
        // if a note was proposed, add it to the note database
        // ---------------------------------------------------

        
mysql_connect("localhost"$user$password);
        
mysql_select_db($note_database);

        if(
$action=="Add!") {

                
// html formatting
                
$noteereg_replace"\n",  "\n<br>"$note); 

                
// check that this is not an existing note
                // (a note may be submitted twice by mistake with the the browser's "reload" button)
                
$query_resultmysql_query("SELECT * FROM notes WHERE page_name='$page_name'
                                                                AND email= '$email'
                                                                AND note='$note' "
);
                
$note_exists=mysql_num_rows($query_result);

                
// actually insert the note
                
if(! $note_exists ) {
                        
mysql_query("INSERT INTO notes(page_name, email, note)
                                     VALUES('$page_name', '$email', '$note') "
);
                };
                
$show_form=0;
                
$action=0;
        };
        
$email=""
        
$note="";


        
// ------------------------------------------------------------
        // look for all notes concerning this page in the note database
        // ------------------------------------------------------------

        
$query_result mysql_query("SELECT * FROM notes
                                     WHERE page_name='$page_name' "
);


        
// -----------------------------
        // display user notes in a table
        // -----------------------------

        
echo '<br><br><hr>'
        if(
mysql_num_rows($query_result)) {
                
begin_blue_frame();
                        echo 
'<b>User notes:</b>';
                
end_blue_frame();
                echo 
"<br>";

                echo 
'<TABLE BORDER=1 CELLSPACING=0 CELLPADDING=3 WIDTH="100%" COLS=2>';
                while (
$row mysql_fetch_array($query_result)) {
                        echo 
'<TR VALIGN=TOP><TD>';
                        echo 
$row["email"];
                        echo 
'</TD><TD>';
                        echo 
$row["note"];
                        echo 
'</TD></TR>';
                };
                echo 
'</TABLE><br><br>';
        };


        
// -----------------------
        // hide/show add-note form
        // -----------------------
?>
        <a name=ADDNOTE>
        <?php begin_blue_frame(); ?>
        <TABLE BORDER=0 CELLSPACING=0 CELLPADDING=0 WIDTH="100%" COLS=2>
<?php
        
if($show_form==0) {
                echo 
"<tr><td></td><td align=right>";
                echo 
"[ <A HREF=\"$page_name?show_form=1#ADDNOTE\">Add a note</A> ]";
                echo 
"</td></tr>";
        }
        else {
                echo 
"<tr><td align=left>";
                echo 
"<b>Add your note to this page with this form</b>";
                echo 
"</td><td align=right>";
                echo 
"[ <a href=\"$page_name?show_form=0#ADDNOTE\">Hide form</a> ]";
                echo 
"</td></tr>";
        };
?>
        </TABLE>
        <?php end_blue_frame(); ?>


<?php
        
// -------------
        // add-note form
        // -------------
        
if($show_form==1) {
        echo 
"<FORM action='$page_name' method=GET>";
?>
        <TABLE BORDER=1 CELLSPACING=0 CELLPADDING=7>
        <TR><TD>Your email:
                <br><input type=text name=email maxlength=100 size=60></TD></TR>
        <TR><TD>Your note:
                <br><textarea name=note cols=60 rows=25></textarea></TD></TR>
        <TR><TD>
        <table border=0 cellspacing=0 cellpadding=0 width="100%" cols=2>
        <tr><td align=center><input type=submit name=action value=Add!></td>
            <td align=center><input type=submit name=action value=Cancel></td></tr>
        </table>
        </TD></TR>
        </TABLE>
        </FORM>

<?php
        
};
};

?>

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.