PX : code

Hit-counter - PSQL by Rikard Ronnkvist
Download this code


<?PHP
/* ------------------------------------------------------------------------------
 Simple text-counter by: Rikard Ronnkvist - riro@snowland.nu

   I disclaim nothing...nor do I claim anything...
   But it would be nice if you included this disclaimer...
---------------------------------------------------------------------------------
How-to:

  Log in as postgres and run
     createdb counter
     psql counter

  And at the postgree-prompt run:
     CREATE TABLE COUNTER (PAGE text, LAST_ACCESS text, FIRST_ACCESS text, COUNT int);
     REVOKE ALL ON COUNTER FROM nobody;
     GRANT SELECT ON COUNTER TO nobody;
     GRANT UPDATE ON COUNTER TO nobody;

  From your php-page use:
     <?PHP include('counter.php3'); ?>
  and you will get a string like:
     Hit 42 since 99-09-01, last hit 99-09-08.

  (You might want to change the $datestr to your local date-string)
------------------------------------------------------------------------------ */
   
$datestr date("y-m-d");

   
$script  getenv("SCRIPT_FILENAME");

   
$cntrconn pg_connect("localhost""5432""""""counter");
   if (!
$cntrconn) {
      echo 
"<b>An error occurred.</b>\n";
      exit;
   }
   
$sqlcmd "SELECT * FROM COUNTER WHERE PAGE = '" $script "';";
   
$result pg_Exec($cntrconn$sqlcmd);
   if (!
$result) {
      echo 
"<B>An error occurred.</b>\n";
      exit;
   }
   
$num pg_NumRows($result);

   if (
$num == 0) {
      
$sqlcmd "INSERT INTO COUNTER (PAGE, COUNT, LAST_ACCESS, FIRST_ACCESS) VALUES ('" $script "', 1, '" date("y-m-d") . "', '" $datestr "');";
      
$result pg_Exec($cntrconn$sqlcmd);
      echo 
"Hit 1 since "$datestr", last hit "$datestr;
   } else {
      echo 
"Hit ",      (pg_Result($result0"count")+1), " ",
           
"since ",     pg_Result($result0"first_access"), ", ",
           
"last hit ",  pg_Result($result0"last_access"), ".";
      
$sqlcmd "UPDATE COUNTER SET COUNT = COUNT+1, LAST_ACCESS = '" $datestr "' WHERE PAGE = '" $script "';";
      
$result pg_Exec($cntrconn$sqlcmd);
   }

   
pg_FreeResult($result);
   
pg_Close($cntrconn);
?>

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.