Examples of PHP to access a MySQL database and wrap data in gbF() .

This shows some examples of PHP and MySQL that have been tried.

If using an SQL database, things get much more complicated as you need to learn SQL, a server side language like PHP or Perl. How to connect to the database and design of a database schema

<?php
//
// select guestbook entries and return

$db_host = "host_name_here";
$username = "userid_here";
$password = "your_password_here";
$DB_name = "your_dbname_here";


/*
// old format
include( './pw/db0.php' );
$chan = mysql_connect ($db_host, $username, $password);
mysql_select_db ($DB_name, $chan);
//$resultid = mysql_query ("select * from GB order by postedOn desc ", $chan);
$resultid = mysql_query ("select * from GB order by postedOn  ", $chan);
*/


// include passwords and connection details from a file elsewhere.

include( './pw/db0.php' );
$mysqli   = new mysqli($db_host, $username, $password, $DB_name);
if (mysqli_connect_errno()) { printf("Connect failed: %s\n", mysqli_connect_error()); }

/* fetch data */
$uresult = $mysqli->query( " select * from GB order by postedOn desc " , MYSQLI_USE_RESULT);

?>
<?php

function escp ( $s ) {
  // escape characters that are code to Java Script, and HTML
  // PHP escapes " and ' by default, so no need for call to // $ss = addslashes ( $s );
  $ss = $s;
  // //CRLF and LF	//HTML specials

  $search  = array ( "'\r'", "'\n'",	"'&'", "'<'", "'>'" );
  $replace = array ( "\\r\\\r", "",	"&", "<", ">" );
  // Uses regular expressions to remove
  return preg_replace ($search, $replace, $ss );
}


/*
while ( $row = mysql_fetch_assoc( $resultid ) ) {

   //echo "  //  ".$row["guestbook"] ." //<BR>\n";
   echo "  gbF( '".escp($row["name"])."','".escp($row["email"])."',".
                 "'".escp($row["postedOn"])."','".escp($row["IPaddress"])."',".
                 "'".escp($row["userfield1"])."','".escp($row["userfield2"])."',".
		 "'".escp($row["userfield3"])."','".escp($row["userfield4"])."',".
		 "'".escp($row["comments"])."' ); //<BR>\n";
}
*/


if ($uresult) {
  while ($row = $uresult->fetch_array()) {
   //echo "  //  ".$row["guestbook"] ." //<BR>\n";
   echo "  gbF( '".escp($row["name"])."','".escp($row["email"])."',".
               "'".escp($row["postedOn"])."','".escp($row["IPaddress"])."',".
               "'".escp($row["userfield1"])."','".escp($row["userfield2"])."',".
		       "'".escp($row["userfield3"])."','".escp($row["userfield4"])."',".
		       "'".escp($row["comments"])."' ); //<BR>\n";
  }
}
?>

Examples of  javascript Guestbook using a MySQL database.

The guest book script accepts a post from a form and appends the data onto the end of a database table.

It is possible to query the database and the client gets a list of javascript function calls populated with the data from the database. It is up to you to write the guts of the function to format as you wish.

PHP for MySQL

Download PHP scripts: dbPHP.zip

Form example:
http://ccgi.dougrice.plus.com/db0601/db8.php

Action: <form name="F1" action="http://ccgi.dougrice.plus.com/db0601/db6.php" method="POST" >
http://ccgi.dougrice.plus.com/db0601/db6.php

Returns data in JavaScript gbF() format:
http://ccgi.dougrice.plus.com/db0601/db9.php

Webpage that includes db9.php:
gbook_db9.htm

Returns data in Table format:
http://ccgi.dougrice.plus.com/db0601/db7.php

Usage:

Include the javascript into your web page:

   
  <script  language = "JavaScript" type ="text/javascript" 
     src ="http://ccgi.dougrice.plus.com/db0601/db9.php?par" >  
  </script>

Here is an example web page: gbook_db9.htm


  <html><body>
  <script>
  opStr  =""; 
  // The function below is called once per guestbook entry. 
  // You write this function to do what you want!!
  function gbF(
  name,email,postedOn,IPaddress,userfield1,userfield2,userfield3,userfield4,comments){
    // You do what you want here
    opStr   += postedOn +"<BR>\n"
  }
   
  // test call
  gbF( "Test Call","email","15 Nov 2003","IPaddress","userfield1","userfield2","userfield3","userfield4","Testcomments")
  </script>
   
  <!-- Include remote guestbook data-->
  <!--
  <script  language = "JavaScript" type =
  "text/javascript" 
     src =
  "http://ccgi.dougrice.plus.com/gb/gbookFXXX.js" >  
  </script>
  -->
   
  <!-- Include remote guestbook that runs a PHP script to
  query the database -->
  <script  language = "JavaScript" type =
  "text/javascript" 
     src =
  "http://ccgi.dougrice.plus.com/db0601/db9.php?par" >  
  </script>
   
  <script> self.document.write( opStr )
  </script>
   
  </body></html>

You can also read the javascript downloaded

   
  http://ccgi.dougrice.plus.com/db0601/db9.php?par

And you get JavaScript:


  //par//<BR>
  //  XXX //<BR>
  gbF( 'Doug ','email','2007-10-29  07:06:24','212.56.108.219  |  dougrice.plus.com','userfield1','userfield2','userfield3','userfield4','uf5  Mon Oct 29 07:06:03 UTC 2007|A test post' ); //<BR>
  //  XXX //<BR>
  gbF( 'name','email','2007-10-28  17:57:53','212.56.108.219  | dougrice.plus.com','userfield1','userfield2','userfield3','userfield4','uf5  Sun Oct 28 17:57:39 UTC 2007|' ); //<BR>
  //  Account //<BR>
  gbF( 'Doug','email','2007-10-28  08:33:33','212.56.108.219  | dougrice.plus.com','userfield1 -  test','userfield2 - uf2','userfield3 - uf3','userfield4 - uf4','uf5 Sun Oct  28 08:32:00 UTC 2007|Here is a test.' ); //<BR>
  //  XXX //<BR>
  gbF( 'Doug','email','2007-10-28  08:32:02','212.56.108.219  | dougrice.plus.com','userfield1','userfield2','userfield3','userfield4','uf5  Sun Oct 28 08:32:00 UTC 2007|' ); //<BR>

MySQL to JavaScript example.

This has not been made secure yet but is a attempt to fetch the guestbook from a MySQL database.

Insert guest book entries with SQL like:


   
  -- phpMyAdmin SQL Dump
  -- version 2.10.1
  -- http://www.phpmyadmin.net
   
  --
  --------------------------------------------------------
  -- 
  -- Table structure for table `GB`
  -- 
   
  CREATE TABLE `GB` (
    `guestbook` text,
    `name` text,
    `email` text,
    `postedOn` text,
    `IPaddress` text,
    `userfield1` text,
    `userfield2` text,
    `userfield3` text,
    `userfield4` text,
    `comments` text
  ) ENGINE=MyISAM DEFAULT CHARSET=latin1;
   
  -- 
  -- Dumping data for table `GB`
  -- 
   
  INSERT INTO `GB` (`guestbook`, `name`, `email`,
  `postedOn`, `IPaddress`, `userfield1`, `userfield2`, `userfield3`,
  `userfield4`, `comments`) VALUES 
  ('guestbookname', 'CRtest', 'email', now() ,
  '212.56.108.219 | dougrice.plus.com', 'userfield1', '4', 'userfield3',
  'userfield4', 'uf5 Tue Oct 23 08:24:05 UTC+0100 2007|Another test 1 " ')
   
   
  INSERT INTO `GB` (`guestbook`, `name`, `email`,
  `postedOn`, `IPaddress`, `userfield1`, `userfield2`, `userfield3`,
  `userfield4`, `comments`) VALUES 
  ('guestbookname', 'CRtest', 'email', '2007-10-27
  16:58:28', '212.56.108.219 | dougrice.plus.com', 'userfield1', '4',
  'userfield3', 'userfield4', 'uf5 Tue Oct 23 08:24:05 UTC+0100 2007|Another
  test 1 " '),
  ('XXX', 'name', 'email', '2007-10-28 17:57:53',
  '212.56.108.219  | dougrice.plus.com', 'userfield1', 'userfield2',
  'userfield3', 'userfield4', 'uf5 Sun Oct 28 17:57:39 UTC 2007|'),
  ('XXX', 'Doug ', 'email', '2007-10-29 07:06:24',
  '212.56.108.219  | dougrice.plus.com', 'userfield1', 'userfield2',
  'userfield3', 'userfield4', 'uf5 Mon Oct 29 07:06:03 UTC 2007|A test post');
   

Server side php script to select information from a database.


  <?php 
   
  //
  // select guestbook entries and return 
  // <script src=db9.php></script>
   
  $db_host = "host_name_here"; 
  $username = "userid_here"; 
  $password = "your_password_here"; 
  $DB_name = "your_dbname_here"; 
   
  // Pick up database login details
  include( './pw/db0.php' );
   
  echo "//".$QUERY_STRING."//<BR>\n";
  $chan = mysql_connect ($db_host, $username, $password); 
  mysql_select_db ($DB_name, $chan); 
   
  $resultid = mysql_query ("select * from GB order by postedOn desc ", $chan);
   
  $infoStr = mysql_info();
   
   
  function escp ( $s ) {
   
   
    // escape characters that are code to Java Script, and HTML
    // PHP escapes " and ' by default, so no need for call to 
    // $ss = addslashes ( $s );
    $ss = $s;
    // //CRLF and LF         //HTML specials
   
    $search = array ( "'\r'", "'\n'",     "'&'",
    "'<'", "'>'" );
    $replace = array ( "\\r\\\r", "",    "&amp;",
    "&lt;", "&gt;" );
    // Uses regular expressions to remove 
    return preg_replace ($search, $replace, $ss );   
  }
   
  while ( $row = mysql_fetch_assoc( $resultid ) ) {
   
     echo "  //  ".$row["guestbook"] ." //<BR>\n";
     echo "  gbF( '".$row["name"]."','".$row["email"].
          "','".$row["postedOn"]."','".$row["IPaddress"]."',".
          "'".$row["userfield1"]."','".$row["userfield2"]."',".
          "'".$row["userfield3"]."','".$row["userfield4"]."',".
          "'".escp($row["comments"])."'  ); //<BR>\n";       
  } 
   
  ?>

Use the javascript below to get the data from the database.


   
  <script  language = "JavaScript" type =
  "text/javascript" 
     src =  "http://ccgi.dougrice.plus.com/db0601/db9.php?par" >  
  </script>

Each row is supplied:


   
    //  XXX //<BR>
    gbF( 'Doug','email','2007-10-28   08:32:02','212.56.108.219  |  dougrice.plus.com','userfield1','userfield2','userfield3','userfield4','uf5  Sun Oct 28 08:32:00 UTC 2007|' ); //<BR>   

A guestbook that inserts new entries into a My SQL database.


  <script language="php">
  // db6.php - Guestbook script the saves the data wrapped in JavaScript function calls and inserts into db
  // copyright 2007 douglas rice.
  // This script takes the data from the form fields.
  // and wraps it in a JavaScript Function Call:
  // gbF( "name","email",postedOn,IPaddress,"userfield1","userfield2","userfield3","userfield4","comments", ).
   
  // After appending the data the URL in form field:  nextpage replaces the page.
  //
  // This uses the same form fields as the BTOpenWorld Guestbook.
  //
   
  ini_set ( "always_populate_raw_post_data","true") ;
   
  function esc ( $s ) {
    // escape characters that are code to Java Script, and HTML
    // PHP escapes " and ' by default, so no need for call to 
    // $ss = addslashes ( $s );
    $ss = $s;
    // //CRLF and LF       //HTML specials
   
    $search = array ( "'\r'", "'\n'",   "'&'", 
                      "'<'", "'>'" );
    $replace = array ( "\\r\\\r", "",  "&amp;",
                       "&lt;", "&gt;" );
    // Uses regular expressions to remove 
   
    $result = preg_replace ($search, $replace, $ss );
   
    // The "i" after the pattern delimiter indicates a case-insensitive search
    if (preg_match("/alprazolam|url=/i", $result))
    {
      $result = "url=spam ";
    } else {
      $result = preg_replace ($search, $replace, $ss ); 
    }
    return $result;
  }
   
  $userfield5 = $_REQUEST["userfield5"];

  $guestbook  = $_REQUEST["guestbook" ];
   
  $name       = $_REQUEST["name"];
  $email      = $_REQUEST["email"];
  $userfield1 = $_REQUEST["userfield1"];
  $userfield2 = $_REQUEST["userfield2"];
  $userfield3 = $_REQUEST["userfield3"];
  $userfield4 = $_REQUEST["userfield4"];
  $comments   = $_REQUEST["comments"];
  $nextpage   = $_REQUEST["nextpage"];
      
  $date=gmstrftime ("%d %b %Y %H:%M:%S");
      
  //$HTTP_RAW_POST_DATA);
  //file_put_contents("php://filter/write=string.rot13/resource=gbOP.txt","--------------");
  $filename = 'gbOP.txt';
   
  // Let's make sure the file exists and is writable first.
  if (is_writable($filename)) {
   
     // In our example we're opening $filename in append mode.
     // The file pointer is at the bottom of the file hence 
     // that's where $somecontent will go when we fwrite() it.
     if (!$handle = fopen($filename, 'a')) {
           echo "Cannot open file ($filename)";
           exit;
     }
   
    $hostname = gethostbyaddr($_SERVER['REMOTE_ADDR']);
   
     if (fwrite($handle, "\n---------------- "
           .$date. "--" .$_SERVER['REMOTE_ADDR']. "--" .$hostname. "--\n " ) === FALSE) {
         echo "Cannot write to file ($filename)";
         exit;
     }
   
     foreach ($_REQUEST as $key => $value ) {
       // Write $somecontent to our opened file.
       if (fwrite($handle, $key."=".$value."\n" ) === FALSE) {
         echo "Cannot write to file ($filename)";
         exit;
       }
     }
     if (fwrite($handle, "\n------------------------  ENV ------------------------\n " ) === FALSE) {
         echo "Cannot write to file ($filename)";
         exit;
     }
   
   
     $spam = false;                       
     foreach ($_ENV as $key => $value ) {
       // Write $somecontent to our opened file.
       if (fwrite($handle, $key."=".$value."\n" ) === FALSE) {
         echo "Cannot write to file ($filename)";
         exit;
       }
   
       if (preg_match("/compatible; MSIE 6\.0; Windows  NT 5\.1/i", $result)) {
         $spam = true;                    
       }
     }
   
   
  // Write $somecontent to our opened file.
  //   if (fwrite($handle, $HTTP_RAW_POST_DATA."\n".$HTTP_POST_VARS ) === FALSE) {
  //       echo "Cannot write to file ($filename)";
  //       exit;
  //   }
     
     //echo "Success, wrote ($somecontent) to file ($filename)";
     fclose($handle);
  } else {
     echo "The file $filename is not writable";
  }
   
   
  $date=gmstrftime ("%d %b %Y %H:%M:%S");
   
  if ( $spam == false ) {
    // append to the file gbookF + the name specified by $guestbook + .js
    $fp = fopen ("./gbookF$guestbook.js", "a+b");
   
   
    fputs($fp,"//  HTTP_USER_AGENT:".$_ENV["HTTP_USER_AGENT"]."\n");
    fputs($fp,"//  QUERY_STRING:".$_ENV["QUERY_STRING"]."\n");
    //fputs($fp,"// HTTP_REFERER:".$_ENV["HTTP_REFERER"]."\n");
   
    fputs($fp,"gbF( //guestbook.php ".esc( $userfield5 )."\n");
     
    $hostname = gethostbyaddr($_SERVER['REMOTE_ADDR']);
      
    fputs($fp,"'".esc( $name )."',\n'".esc( $email )."',\n '$date',\n '".
            getenv ("REMOTE_ADDR" )." ".getenv ( "HTTP_X_FORWARDED_FOR" )." | ".esc($hostname)."',\n");
   
    // output the 4 user fields and comments
    fputs($fp,"'".esc( $userfield1 )."',\n'".esc( $userfield2 )."',\n");
    fputs($fp,"'".esc( $userfield3 )."',\n'".esc( $userfield4 )."',\n");
    fputs($fp,"'".esc( $userfield5 )."|".esc( $comments )."'\n");
    fputs($fp,");\n");
   
    fclose($fp);
   
    $db_host = "host_name_here"; 
    $username = "userid_here"; 
    $password = "your_password_here"; 
    $DB_name = "your_dbname_here"; 
   
    // Pick up database login details
    include( './pw/db0.php' );
   
      $chan = mysql_connect ($db_host, $username,
  $password); 
    
    mysql_select_db ($DB_name, $chan); 
   
    $sqlStr = 
   
    "INSERT INTO GB  VALUES " . 
    //  fputs($fp,"//  HTTP_USER_AGENT:".$_ENV["HTTP_USER_AGENT"]."\n");
    //  fputs($fp,"// QUERY_STRING:".$_ENV["QUERY_STRING"]."\n");
    //  //fputs($fp,"//  HTTP_REFERER:".$_ENV["HTTP_REFERER"]."\n");
    //  fputs($fp,"gbF( //guestbook.php ".esc(  $userfield5 )."\n");
    //  $hostname = gethostbyaddr($_SERVER['REMOTE_ADDR']);
    
      "( ".
      "'".esc( $guestbook )."',".
      //   "'".esc( $name )."',\n '".esc( $email )."',\n '$date',\n '".getenv ( "REMOTE_ADDR")." ".getenv ( "HTTP_X_FORWARDED_FOR" )." | ".esc($hostname)."',\n".
      "'".esc( $name )."',\n '".esc( $email )."',\nnow(),\n '".
      getenv ( "REMOTE_ADDR" )." ".getenv ( "HTTP_X_FORWARDED_FOR" )." | ".esc($hostname)."',\n".

      // output the 4 user fields and comments
      "'".esc( $userfield1 )."',\n'".esc( $userfield2 )."',\n". 
      "'".esc( $userfield3 )."',\n'".esc( $userfield4 )."',\n". 
      "'".esc( $userfield5 )."|".esc( $comments )."'\n ); " ;
   
    //   echo( $sqlStr ."<BR>\n" );
   
    $resultid = mysql_query ( $sqlStr , $chan); 
   
    $infoStr = mysql_info() . " - affected rows: " . mysql_affected_rows();   

    // echo( "insert result:".$resultid." " . $infoStr . "<P>");   

    // echo "<br>"; 

  }
   
  // reload the page with the URL provided in next page.
  header("Location: $nextpage\n\n\n" );
  exit;
  </script>