PX : code

Hit-counter - PSQL v2 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, NS int, MSIE int, OTHER 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 99-09-08 | Internet Explorer 25% | Netscape 65% | Other 10%

  (You might want to change the $datestr and $timestr to your local date-string)
---------------------------------------------------------------------------------------------- */
   
function counterp$totalcnt$browsercnt ) {
     if (
$browsercnt != 0) {
        return (
$browsercnt $totalcnt) * 100;
     } else {
        return 
0;
     }
   }

   
$datestr date("y-m-d");
   
$timestr date("H:i");
   
$agent strtoupper($HTTP_USER_AGENT);
   
$browser "OTHER";
   if (
eregi("OZILLA",$agent)) $browser "NS";
   if (
eregi("MSIE"  ,$agent)) $browser "MSIE";

   
$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, NS, MSIE, OTHER) VALUES ('" $script "', 1, '" $timestr "', '" $datestr "', 0, 0, 0);";
      
$result pg_Exec($cntrconn$sqlcmd);
      
$sqlcmd "UPDATE COUNTER SET " $browser " = " $browser " +1 WHERE PAGE = '" $script "';";
      
$result pg_Exec($cntrconn$sqlcmd);

      echo 
"Hit: 1 | Since: "$datestr" | Last: "$timestr;
   } else {
      
$msie  counterp(pg_Result($result0"count"), pg_Result($result0"msie"));
      
$ns    counterp(pg_Result($result0"count"), pg_Result($result0"ns"));
      
$other counterp(pg_Result($result0"count"), pg_Result($result0"other"));

      echo 
"Hit: ",               (pg_Result($result0"count")+1), " | ",
           
"Since: ",              pg_Result($result0"first_access"), " | ",
           
"Last: ",               pg_Result($result0"last_access"), " | ",
           
"Internet Explorer: ",  sprintf("%01.0f"$msie),  "% | ",
           
"Netscape: ",           sprintf("%01.0f"$ns),    "% | ",
           
"Other: ",              sprintf("%01.0f"$other), "%";

      
$sqlcmd "UPDATE COUNTER SET COUNT = COUNT+1, LAST_ACCESS = '" $timestr "', " $browser " = " $browser " +1 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.