greatly improve error handling of SQL statements. connection errors still causing...
authorchriskl <chriskl>
Sun, 22 Dec 2002 15:01:28 +0000 (15:01 +0000)
committerchriskl <chriskl>
Sun, 22 Dec 2002 15:01:28 +0000 (15:01 +0000)
classes/database/ADODB_base.php
classes/database/Postgres72.php
lang/english.php
libraries/errorhandler.inc.php [new file with mode: 0644]
themes/default/global.css

index eeb2abaf36f958812e2fd87587c145b0d7273d5b..98e358f0668eb9252a1e75195920fbd25d04414d 100644 (file)
@@ -3,10 +3,10 @@
 /*
  * Parent class of all ADODB objects.
  *
- * $Id: ADODB_base.php,v 1.5 2002/09/23 06:11:38 chriskl Exp $
+ * $Id: ADODB_base.php,v 1.6 2002/12/22 15:01:28 chriskl Exp $
  */
 
-include_once('../libraries/adodb/adodb-errorhandler.inc.php');
+include_once('../libraries/errorhandler.inc.php');
 include_once('../libraries/adodb/adodb.inc.php');
 
 class ADODB_base {
index 6fd61d4057f02d171206746b5a03132768e4db77..85afc6effe4a9a99946b27f4dd0750564d715105 100644 (file)
@@ -4,7 +4,7 @@
  * A class that implements the DB interface for Postgres
  * Note: This class uses ADODB and returns RecordSets.
  *
- * $Id: Postgres72.php,v 1.19 2002/12/21 11:16:46 chriskl Exp $
+ * $Id: Postgres72.php,v 1.20 2002/12/22 15:01:29 chriskl Exp $
  */
 
 
@@ -22,6 +22,10 @@ class Postgres72 extends Postgres71 {
        // This gets it from the database. 
        // $rs = pg_exec($link, "SELECT oid FROM pg_database WHERE datname='template1'") or pg_die(pg_errormessage(), "", __FILE__, __LINE__);
        // $builtin_max = pg_result($rs, 0, "oid");
+       
+       function Postgres72($host, $port, $database, $user, $password) {
+               $this->Postgres71($host, $port, $database, $user, $password);
+       }
 
        // Table functions
 
index 72b00b7e36c8a039c845a6e71c9e2fb045b52cff..cff6e4dd276eb935093e377fcc4e016854a4067d 100755 (executable)
@@ -4,7 +4,7 @@
         * Language template file for WebDB.  Use this to base language
         * files.
         *
-        * $Id: english.php,v 1.19 2002/12/21 11:16:46 chriskl Exp $
+        * $Id: english.php,v 1.20 2002/12/22 15:01:30 chriskl Exp $
         */
 
        $appLang = 'english';
        $strEdit = 'Edit';
        $strInvalidParam = 'Invalid script parameters.';
 
+       // Error handling
+       $strSQLError = 'SQL error:';
+       $strInStatement = 'In statement:';
+       
        // Users
        $strUser = 'User';
        $strGroup = 'Group';
diff --git a/libraries/errorhandler.inc.php b/libraries/errorhandler.inc.php
new file mode 100644 (file)
index 0000000..3a83085
--- /dev/null
@@ -0,0 +1,81 @@
+<?php
+
+/**
+ * Overrides default ADODB error handler to provide nicer error handling.
+ *
+ * $Id: errorhandler.inc.php,v 1.1 2002/12/22 15:01:32 chriskl Exp $
+ */
+
+define('ADODB_ERROR_HANDLER','Error_Handler');
+
+/**
+ * Default Error Handler. This will be called with the following params
+ *
+ * @param $dbms                the RDBMS you are connecting to
+ * @param $fn          the name of the calling function (in uppercase)
+ * @param $errno               the native error number from the database
+ * @param $errmsg      the native error msg from the database
+ * @param $p1          $fn specific parameter - see below
+ * @param $P2          $fn specific parameter - see below
+ */
+function Error_Handler($dbms, $fn, $errno, $errmsg, $p1=false, $p2=false)
+{
+       global $strSQLError, $strInStatement;
+
+       switch($fn) {
+       case 'EXECUTE':
+               $sql = $p1;
+               $inputparams = $p2;
+
+               $s = "<p><b>{$strSQLError}</b><br>" . htmlspecialchars($errmsg) . "</p>
+                     <p><b>{$strInStatement}</b><br>" . htmlspecialchars($sql) . "</p>
+               ";
+               echo "<table class=\"error\" cellpadding=\"5\"><tr><td>{$s}</td></tr></table>\n";
+
+               break;
+
+       case 'PCONNECT':
+       case 'CONNECT':
+               $host = $p1;
+               $database = $p2;
+
+               $s = "$dbms error: [$errno: $errmsg] in $fn($host, ?, ?, $database)\n";
+               /*
+               echo $s;
+               include('../conf/config.inc.php');
+               include($appBase . '/login.php');
+               // Theme
+               echo "<style type=\"text/css\">\n<!--\n";
+               include("../themes/{$guiTheme}/global.css");
+               echo "\n-->\n</style>\n";
+               exit;
+               */
+               break;
+       default:
+               $s = "$dbms error: [$errno: $errmsg] in $fn($p1, $p2)\n";
+               echo "<table class=\"error\" cellpadding=\"5\"><tr><td>{$s}</td></tr></table>\n";
+               break;
+       }
+       /*
+       * Log connection error somewhere
+       *       0 message is sent to PHP's system logger, using the Operating System's system
+       *               logging mechanism or a file, depending on what the error_log configuration
+       *               directive is set to.
+       *       1 message is sent by email to the address in the destination parameter.
+       *               This is the only message type where the fourth parameter, extra_headers is used.
+       *               This message type uses the same internal function as mail() does.
+       *       2 message is sent through the PHP debugging connection.
+       *               This option is only available if remote debugging has been enabled.
+       *               In this case, the destination parameter specifies the host name or IP address
+       *               and optionally, port number, of the socket receiving the debug information.
+       *       3 message is appended to the file destination
+       */
+       if (defined('ADODB_ERROR_LOG_TYPE')) {
+               $t = date('Y-m-d H:i:s');
+               if (defined('ADODB_ERROR_LOG_DEST'))
+                       error_log("($t) $s", ADODB_ERROR_LOG_TYPE, ADODB_ERROR_LOG_DEST);
+               else
+                       error_log("($t) $s", ADODB_ERROR_LOG_TYPE);
+       }
+}
+?>
index 78f490b733b42ff22126d76091be9ef2ff94a367..c8f0ebde15284427dbeae53eafeb4ef668a75111 100644 (file)
@@ -37,6 +37,10 @@ body.browser
        text-align: left;
 }
 
+p.message {
+       color: blue;
+}
+
 h2
 {
        color: #666633;
@@ -45,6 +49,15 @@ h2
        font-weight: bold;
 }
 
+table.error
+{
+       background-color: #E6E6CC;
+}
+
+table.error td {
+       background-color: #E6E6CC;
+}
+
 table.navbar
 {
        background-color: #E6E6CC;
@@ -205,7 +218,7 @@ a.nav:active
 
 
 /** CLASSES */
-
+/*
 .tabbutton {
 
   border-top: 1px solid #FFFFFF;
@@ -318,9 +331,9 @@ a.nav:active
 {
        visibility : hidden;
 }
-
+*/
 /** IDs */
-
+/*
 #content
 {
        height: 100%;
@@ -329,4 +342,4 @@ a.nav:active
        text-align: left;
        width: 100%;
 }
-*/
\ No newline at end of file
+*/