0fc268c995a06c2a40aab6b4b99fa69852093a86
[gnucomo.git] / src / phpclasses / db.postgres.php
1 <?php
2   
3   class db {
4   /* This class is an abstraction class for the database used. Initially it was
5    * written for the gnucomo-project to support PostgreSQL, but ultimately 
6    * it must be ready to be used with other database systems as well. The code
7    * will then be used to over come the specific differences between systems
8    */
9
10    //Input variables
11    var $db_host;            //The host-name (or IP-address) to make the connection to
12    var $db_name;            //The name of the database
13    var $db_user;            //The username as known in the database
14    var $db_password;        //The password used for entry
15
16    //Database information
17    var $db_connection;     //The active database connection
18    var $db_result;         //The result-set from a query
19    var $db_row_number;     //The row-number that is currently active
20    var $db_result_row;     //Array with in each element a field of the result
21
22    function db_connect () {
23     /* This function makes the connection to the database. It will look at the selected DBMS. 
24      * It will detected if password or hostname is missing and leave that out of the string.
25      * INPUT: NONE (all defined in the class)
26      * OUTPUT: NONE
27      */ 
28      $local_connection_string = '';
29      if ($this->db_host == '') {
30         $local_connection_string .= "host=$this->db_host ";
31      }
32     
33      $local_connection_string = "dbname=$this->db_name user=$this->db_user ";
34
35      if ($this->db_password == '') {
36         $local_connection_string .= $this->db_password;
37      }
38
39         $this->db_connection = pg_pconnect($local_connection_string);
40         if ($this->have_db_connection() == FALSE) {
41            syslog (LOG_INFO, "Failed to make a connection to Postgres");
42            die ("connection to Postgres failed\n");
43         } else {
44            syslog (LOG_INFO, "Connection to Postgres was made correctly");
45         }
46    }
47             
48    function have_db_connection () {
49    /* This simple function verifies if a connection has succesfully been made
50     * Output: Returns TRUE if the connection was successfully (else it will be FALSE)
51     */
52    // PHP-> 4.2.Xcode  if (pg_connection_status($this->db_connection) == PGSQL_CONNECTION_BAD) {
53    if ($this->db_connection == '') {
54        return "FALSE";
55     } else {
56        return "TRUE";
57     }
58    }
59    
60    function query ($inp_sql_query) {
61
62    /* This function executes a query against the active database connection
63     * INPUT:
64     *   - $inp_sql_query: The is the string with the SQL to execute
65     * OUTPUT: Resultstring
66     */
67         $this->db_result =  pg_exec ($this->db_connection, $inp_sql_query);
68         $this->db_row_number = 0;
69
70     }
71
72     function fetch_row() {
73     /* This function returns a single row as a result of a query if the last record has been reached
74      * the result will be FALSE otherwise it will be TRUE
75      * INPUT      : NONE (everything is available within the class)
76      * OUTPUT     : Success TRUE/FALSE 
77      * VALUES SET :  
78      */
79      unset ($this->db_result_row);
80      if (pg_numrows($this->db_result) < $this->db_row_number) {
81         $this->db_row_number=-1;
82         return "FALSE";
83      }  else {
84         $this->db_result_row = pg_fetch_row($this->db_result);
85         return "TRUE";
86      }
87     } 
88
89     function num_rows() {
90     /* This functions returns the number of rows in a resultset
91      * INPUT     : NONE
92      * OUTPUT    : Number of rows (number)
93      */
94      return pg_numrows($this->db_result);
95      // 4.2.X return pg_num_rows($this->db_result);
96     }
97
98     function num_fields() {
99     /* This function returns the number of fields in the resultset
100      * INPUT    : NONE
101      * OUTPUT   : Number of fields (number)
102      */
103      return pg_numfields($this->db_result);
104      //4.2.X return pg_num_fields($this->db_result);
105     }
106
107 }
108
109 ?>