1ca33023820d0d773350988ddd8cdd929719d076
[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    /* This function executes a query against the active database connection
61     * INPUT:
62     *   - $inp_sql_query: The is the string with the SQL to execute
63     * OUTPUT: Resultstring
64     */
65         $this->db_result =  pg_exec ($this->db_connection, $inp_sql_query);
66         $this->db_row_number = 0;
67     }
68
69     function fetch_row() {
70     /* This function returns a single row as a result of a query if the last record has been reached
71      * the result will be FALSE otherwise it will be TRUE
72      * INPUT      : NONE (everything is available within the class)
73      * OUTPUT     : Success TRUE/FALSE 
74      * VALUES SET :  
75      */
76      unset ($this->db_result_row);
77      if (pg_num_rows($this->db_result) < $this->db_row_number) {
78         $this->db_row_number=-1;
79         return "FALSE";
80      }  else {
81         $this->db_result_row = pg_fetch_row($this->db_result);
82         return "TRUE";
83      }
84     } 
85
86     function num_rows() {
87     /* This functions returns the number of rows in a resultset
88      * INPUT     : NONE
89      * OUTPUT    : Number of rows (number)
90      */
91      return pg_numrows($this->db_result);
92      // 4.2.X return pg_num_rows($this->db_result);
93     }
94
95     function num_fields() {
96     /* This function returns the number of fields in the resultset
97      * INPUT    : NONE
98      * OUTPUT   : Number of fields (number)
99      */
100      return pg_numfields($this->db_result);
101      //4.2.X return pg_num_fields($this->db_result);
102     }
103
104 }
105
106 ?>