234f832041105ef09d5f2e225d3e708e1c54c684
[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      if ($this->db_password == '') {
35         $local_connection_string .= $this->db_password;
36      }
37
38         $this->db_connection = @pg_pconnect($local_connection_string);
39         if ($this->have_db_connection() == "FALSE") {
40            syslog (LOG_INFO, "Failed to make a connection to Postgres");
41            die ("connection to Postgres failed");
42         } else {
43            syslog (LOG_INFO, "Connection to Postgres was made correctly");
44         }
45    }
46             
47    function have_db_connection () {
48    /* This simple function verifies if a connection has succesfully been made
49     * Output: Returns TRUE if the connection was successfully (else it will be FALSE)
50     */
51    // PHP-> 4.2.Xcode  if (pg_connection_status($this->db_connection) == PGSQL_CONNECTION_BAD) {
52    if ($this->db_connection == '') {
53        return "FALSE";
54     } else {
55        return "TRUE";
56     }
57    }
58    
59    function query ($inp_sql_query) {
60
61    /* This function executes a query against the active database connection
62     * INPUT:
63     *   - $inp_sql_query: The is the string with the SQL to execute
64     * OUTPUT: Resultstring
65     */
66         $this->db_result =  pg_exec ($this->db_connection, $inp_sql_query);
67         $this->db_row_number = 0;
68
69     }
70
71     function fetch_row() {
72     /* This function returns a single row as a result of a query if the last record has been reached
73      * the result will be FALSE otherwise it will be TRUE
74      * INPUT      : NONE (everything is available within the class)
75      * OUTPUT     : Success TRUE/FALSE 
76      * VALUES SET :  
77      */
78      unset ($this->db_result_row);
79      if (pg_numrows($this->db_result) < $this->db_row_number) {
80         $this->db_row_number=-1;
81         return "FALSE";
82      }  else {
83         $this->db_result_row = pg_fetch_row($this->db_result);
84         return "TRUE";
85      }
86     } 
87
88     function num_rows() {
89     /* This functions returns the number of rows in a resultset
90      * INPUT     : NONE
91      * OUTPUT    : Number of rows (number)
92      */
93      return pg_numrows($this->db_result);
94      // 4.2.X return pg_num_rows($this->db_result);
95     }
96
97     function num_fields() {
98     /* This function returns the number of fields in the resultset
99      * INPUT    : NONE
100      * OUTPUT   : Number of fields (number)
101      */
102      return pg_numfields($this->db_result);
103      //4.2.X return pg_num_fields($this->db_result);
104     }
105
106 }
107
108 ?>