Index: trunk/ippMonitor/raw/ipp.php
===================================================================
--- trunk/ippMonitor/raw/ipp.php	(revision 41730)
+++ trunk/ippMonitor/raw/ipp.php	(revision 42384)
@@ -26,5 +26,5 @@
 
   menu ('ipp.menu.dat', 'Select Project', 'ipp.css', $ID['link'], $ID['proj']);
-  if ($_GET['new'] && $_GET['proj']) {
+  if (isset($_GET['new']) && isset($_GET['proj'])) {
     echo "<p> Project is now <b>" . $_GET['proj'] . "</b></p>\n";
   }
@@ -66,4 +66,12 @@
   global $DBI;
 
+  if ($DBI == "PDO") {
+    $result = $qry->fetch();
+    if ($result == NULL) {
+      $success = 0;
+    } else {
+      $success = 1;
+    }
+  }
   if ($DBI == "MDB2") {
     $result = $qry->fetchRow();
@@ -90,4 +98,27 @@
   global $CZARDBHOST;
 
+  // define the DSN strings. NOTE: PDO uses a different format from DB or MDB2
+  if ($database == $CZARDBNAME) {
+    $dsn_pdo = "mysql:host=$DBHOST;dbname=$database";
+    $dsn = "mysql://$DBUSER:$DBPASS@$CZARDBHOST/$database";
+    $dsnerr = "mysql://$DBUSER:XXX@$CZARDBHOST/$database"; // only used to report the error
+  } else {
+    $dsn_pdo = "mysql:host=$CZARDBHOST;dbname=$database"; // note this is case sensitive
+    $dsn = "mysql://$DBUSER:$DBPASS@$DBHOST/$database";
+    $dsnerr = "mysql://$DBUSER:XXX@$DBHOST/$database"; // only used to report the error
+  }
+
+  // PDO has a different error handling method initially (throw exception)
+  // but after construction can be set to match DB & MDB2
+  if ($DBI == "PDO") {
+    try {
+      $db = new PDO($dsn_pdo, $DBUSER, $DBPASS);
+      $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING);
+    } catch (PDOException $dberr) {
+      dbconnectFailure($dberr, $dsnerr);
+    }
+    return $db;
+  }
+
   $success = 0;
   if ($DBI == "MDB2") {
@@ -104,12 +135,4 @@
   }
 
-  // connect to the database
-  if ($database == $CZARDBNAME) {
-    $dsn = "mysql://$DBUSER:$DBPASS@$CZARDBHOST/$database";
-    $dsnerr = "mysql://$DBUSER:XXX@$CZARDBHOST/$database"; // only used to report the error
-  } else {
-    $dsn = "mysql://$DBUSER:$DBPASS@$DBHOST/$database";
-    $dsnerr = "mysql://$DBUSER:XXX@$DBHOST/$database"; // only used to report the error
-  }
   if ($DBI == "DB") {
     $db = DB::connect($dsn);
@@ -118,15 +141,19 @@
     $db = MDB2::connect($dsn);
   }
-
   if (dberror($db)) {
-    echo "<b>error accessing database</b><br>\n";
-    echo "<b>tried $dsnerr</b><br>\n";
-    $result = $db->getMessage();
-    echo "$result<br>";
-    menu_end();
+    dbconnectFailure($db, $dsnerr);
   }
   return $db;
 }
 
+function dbconnectFailure($db, $dsnerr) {
+  echo "<b>error accessing database</b><br>\n";
+  echo "<b>tried $dsnerr</b><br>\n";
+  $result = $db->getMessage();
+  echo "$result<br>";
+  menu_end();
+}
+
+# return true/false for an error
 function dberror ($db) {
   global $DBI;
@@ -137,4 +164,11 @@
   if ($DBI == "DB") {
     $dberr = DB::isError($db);
+  }
+  if ($DBI == "PDO") {
+    if ($db == null) {
+      $dberr = 1;
+    } else {
+      $dberr = 0;
+    }
   }
 
